【问题标题】:Windows XP - mute/unmute audio in programmatically in PythonWindows XP - 在 Python 中以编程方式静音/取消静音
【发布时间】:2010-11-08 17:06:24
【问题描述】:

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

我想也许我可以用pywin32 做到这一点,但everything 我可以find 似乎专门用于设置输出音量而不是输入,而且我对win32 不够熟悉,甚至不知道在哪里看了解更多信息。

谁能指出我正确的方向?

【问题讨论】:

    标签: python windows winapi audio pywin32


    【解决方案1】:

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

    根据pywin32 FAQ

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

    一般来说,诀窍是不要 将其视为 Python/PyWin32 问题 完全没有,但要搜索 您的文档或示例 问题,与语言无关。 这通常会给你 您需要执行的信息 使用这些相同的操作 扩展名。包含的 文档会告诉你 的参数和返回类型 功能,因此您可以轻松确定 “拼写”事物的正确方法 蟒蛇。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        2) 使用 ctypes。使用 ctypes 封装几乎所有 C 功能通常都非常容易。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-09
          • 1970-01-01
          • 2016-02-14
          • 2014-04-01
          • 2018-09-23
          • 1970-01-01
          • 1970-01-01
          • 2013-09-15
          相关资源
          最近更新 更多