我的机器有两个audioinput:用于游戏的麦克风,以及用于吉他的线。 当使用一个重要的是另一个被静音以消除嘶嘶声/静态,所以我希望写一个小脚本,将切换哪一个被静音(这是相当不方便点击托盘图标,切换到我的input设备,静音并取消静音)。
我想也许我可以用pywin32来做到这一点,但是我能find的 所有东西似乎都是设置输出音量而不是input,而我对win32不够熟悉,甚至不知道在哪里寻找更好的信息。
有人能指出我的方向吗?
我有一个类似的问题,不知道如何使用Windows API来做我想做的事情。 我最终用AutoIt自动化了GUI。 我认为这将是最快和最简单的解决方案(尽管是一个“哈克”)。 正如我今天早些时候回答的那样,您可以在Python中使用AutoIT。
免责声明:我不是一个Windows编程大师,但这是我最好的猜测
根据pywin32常见问题解答 :
如何使用暴露的Win32函数来执行xyz?
一般来说,诀窍是根本不考虑Python / PyWin32的问题,而是要搜索文档或问题的例子,而不考虑语言。 这通常会为您提供使用这些扩展来执行相同操作所需的信息。 包含的文档将告诉你函数的参数和返回类型,这样你就可以很容易地确定在Python中“拼写”东西的正确方法。
听起来就像你想控制“端点设备”卷(即你的声卡/线路输入)。 这里是该方向的API参考 。
如果以前不是你要找的东西,那么在控制Windows中的音频设备的时候, 这是一个稍微宽泛的视图。
这里有一个人在C#中做了你想做的事情(我知道你指定了python,但你也许能够从代码中提取正确的API调用)。
祝你好运! 如果你确实得到了工作代码,我很乐意看到它。
你可能更好使用ctypes
– pywin32
是好的,如果你正在使用已经包含的API之一,但我认为你会运气良好的API。 连同tgray
提供的C#链接中的示例代码,使用ctypes
和winmm.dll
,或者使用SWIG
来包装winmm.dll
。 这可能会更快,因为您不必在ctypes
为API调用中使用的类型(如MIXERCONTROLDETAILS
构建C结构映射类型。
tgray似乎已经指出你在正确的方向,但是一旦你找到了正确的Win32 API来处理,你有几个选择:
1)尝试使用pywin32 …但它可能或不可能包装你需要的功能(它可能不)。 所以如果你需要使用COM来获得你需要的功能,你可能只想做这个。
2)使用ctypes。 用ctypes来包装任何C功能通常都很容易。
3)如果C#示例看起来像你所需要的,你应该能够把它翻译成IronPython,只需要很少的努力。 可能比使用C API更容易。 YMMV,当然。