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