2

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

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

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

4

4 回答 4

6

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

根据pywin32 常见问题解答

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

一般来说,诀窍是根本不将其视为 Python/PyWin32 问题,而是搜索您的问题的文档或示例,无论使用哪种语言。这通常会为您提供使用这些扩展执行相同操作所需的信息。包含的文档将告诉您函数的参数和返回类型,以便您可以轻松确定在 Python 中“拼写”事物的正确方法。

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

如果以前不是您想要的,这里是对在 windows 中控制音频设备的更广泛的了解

是某人在 C# 中尝试执行的操作的博客条目(我知道您指定了 python,但您可能能够从代码中提取正确的 API 调用)。

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

于 2009-07-07T16:42:40.650 回答
3

我遇到了类似的问题,不知道如何使用 Windows API 来做我想做的事。我最终只是用 AutoIt 自动化了 GUI。我认为这将是最快和最简单的解决方案(尽管是一个“hacky”解决方案)。正如我今天早些时候回答的那样,您可以在 Python 中使用 AutoIT。

于 2009-07-07T19:11:01.397 回答
1

如果您使用已包含的 API 之一,您可能最好使用ctypes-pywin32很好,但我认为您对声音 API 会不走运。与 提供的 C# 链接中的示例代码一起tgray,使用ctypesand winmm.dll,或者使用SWIGto wrap winmm.dll。这可能会更快,因为您不必为API 调用中使用ctypes的类型构建 C 结构映射类型。MIXERCONTROLDETAILS

于 2009-07-07T17:22:31.477 回答
0

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

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

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

3) 如果 C# 示例看起来像您所需要的,您应该能够毫不费力地将其转换为 IronPython。可能比使用 C API 更容易。YMMV,当然。

于 2009-07-07T17:32:31.300 回答