Windows XP - 在Python中以编程方式静音/取消静音

时间:2009-07-07 13:50:58

标签: python windows winapi audio pywin32

我的机器有两个音频输入:一个用于游戏的麦克风,以及一个用于吉他的线路。当使用一个时,重要的是另一个被静音以移除嘶嘶声/静态,所以我希望写一个小脚本来切换哪一个被静音(点击托盘图标,切换到我的输入设备,静音是相当不方便的和取消静音)。

我想也许我可以用pywin32做到这一点,但是everythingfind似乎特定于设置输出音量而不是输入,我对win32不够熟悉甚至知道在哪里寻找更好的信息。

有人能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:5)

免责声明: 我无论如何都不是Windows编程大师......但这是我最好的猜测

根据pywin32 FAQ

  

如何使用公开的Win32函数执行xyz?

     

一般来说,诀窍是不   认为这是一个Python / PyWin32问题   根本,但要搜索   您的文档或示例   问题,不管语言。   这通常会给你   您需要执行的信息   使用这些的相同操作   扩展。包括在内   文档会告诉你   参数和返回类型   功能,以便您可以轻松确定   正确的“拼写”东西的方法   蟒。

听起来您正在寻找控制“端点设备”卷(即您的声卡/线路输入)。这是该方向的API reference

Here如果之前的音频设备不是您想要的,那么在Windows中控制音频设备会有一个更广泛的视角。

Here是一个博客条目,来自那些在C#中尝试做的事情(我知道你指定了python,但你可以从代码中提取正确的API调用)。

祝你好运!如果你确实得到了工作代码,我很有兴趣看到它。

答案 1 :(得分:2)

我遇到了类似的问题,无法弄清楚如何使用Windows API来做我想要的事情。我最终只是使用AutoIt自动化GUI。我认为这将是最快速,最简单的解决方案(尽管是“hacky”解决方案)。正如我今天早些时候answered所做的那样,你可以在Python中使用AutoIT。

答案 2 :(得分:1)

你最好使用ctypes - 如果你使用已经包含的API之一,pywin32是好的,但我认为你会对声音API感到不快。与tgray提供的C#链接中的示例代码一起使用ctypeswinmm.dll,或者使用SWIG来包装winmm.dll。这可能会更快,因为您不必在ctypes中为API调用中使用的MIXERCONTROLDETAILS等类型构建C结构映射类型。

答案 3 :(得分:0)

tgray 似乎已经指出了正确的方向,但是一旦你找到了正确的Win32 API来处理,你有几个选择:

1)尝试使用pywin32 ...但它可能包含或不包含您需要的功能(可能没有)。因此,如果您需要使用COM来获得所需的功能,那么您可能只想这样做。

2)使用ctypes。使用ctypes包装任何C功能通常很容易。

3)如果C#示例看起来像你需要的那样,你应该可以用很少的努力将它翻译成IronPython。可能比使用C API更容易。当然是YMMV。