2009-07-07 295 views
1

我的机器有两个音频输入:一个用于游戏的麦克风,一个用于吉他。使用其中一个重要的是另一个静音以消除嘶嘶声/静电,所以我希望编写一个小脚本来切换哪一个被静音(点击托盘图标,切换到我的输入设备,静音相当不方便并取消静音)。Windows XP - 以编程方式在Python中静音/取消静音音频

我想也许我可以pywin32做到这一点,但everything我可以find似乎具体到设置输出量,而不是输入,我没有足够的Win32熟悉甚至不知道到哪里寻找更好的信息。

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

回答

2

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

+0

我试图进入Windows API,但不幸的是发现它是不可逾越的。虽然我很满意我的AutoIt解决方案;如果任何人有兴趣的脚本在http://bitbucket.org/kiv/scripts/src/tip/muteit.au3 – Kiv 2009-07-09 00:44:34

4

免责声明:我不以任何方式在Windows编程高手......但这里是我最好的猜测

pywin32 FAQ

如何使用暴露Win32函数来做xyz?

一般来说,诀窍是不 认为这是一个Python/PyWin32问题 所有,但搜索 文档或 问题的例子,无论使用什么语言。 这通常会给你 信息,你需要使用这些 扩展执行 相同的操作。包含的 文档将告诉您 函数的参数和返回类型,因此您可以轻松确定 正确的方式来在Python中“拼写”事物。

听起来就像你想要控制“端点设备”卷(即你的声卡/线路输入)。这是朝这个方向的API reference

Here在控制Windows中的音频设备时,如果以前不是您要查找的内容,请稍微宽泛一些。

Here是某人在C#中做了你想做的事情的博客文章(我知道你指定了python,但你可能能够从代码中提取正确的API调用)。

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

1

你可能更适合使用​​- pywin32如果你使用的是已经包含的API之一,但是我认为你会失去声音的APIs。连同由tgray提供的来自C#链接的示例代码,使用​​和winmm.dll,或者使用SWIG来包装winmm.dll。这可能会更快,因为您不必在​​中针对在API调用中使用的类型(如MIXERCONTROLDETAILS)构建C结构映射类型。

0

tgray似乎都指出你在正确的方向,但一旦你找到正确的Win32 API来处理,你有两个选择:

1)尝试使用pywin32 ... ...但它可能会或可能不会包装你需要的功能(它可能不会)。所以如果你需要使用COM来获得你需要的功能,你可能只想做到这一点。

2)使用ctypes。使用ctypes来包装任何C功能通常都很容易。 3)如果C#示例看起来像你所需要的,你应该能够用很少的努力将它翻译成IronPython。可能比使用C API更容易。 YMMV,当然。

相关问题