【问题标题】:Python: Change Windows 7 master volumePython:更改 Windows 7 主卷
【发布时间】:2013-08-09 08:45:39
【问题描述】:

我希望能够在 Python 中控制主音量(不是针对应用程序,而是针对当前活动扬声器)。这似乎是一个棘手的话题;我尝试在 C# 中执行此操作,但我什至无法让它在那里工作。有没有办法做到这一点? (Windows 7 x64)

请注意,由于我的问题是专门针对 Python 的,因此这个问题之前没有得到回答。此外,VonC 所指的项目不适用于 Windows 7。

【问题讨论】:

  • 您可能想在那里查看 VonC 的答案,而不是接受的答案,因为您只关心 Windows 7,因此您不需要更复杂的 XP 兼容代码。

标签: python windows audio


【解决方案1】:

执行此操作的简单方法是通过ISimpleAudioVolume

如果您使用的是来自 pywin32 项目的 Win32 COM 包装器,那么在 Python 中应该很容易访问它。

正如文档所解释的,有多种方法可以获得对ISimpleAudioVolume 的引用。您需要像sndvol.exe 那样获得一个跨进程会话。有关详细信息,请参阅WASAPI 上的顶级文档。

伪代码如下所示:

mmde = CoCreateInstance(CLSID_MMDeviceEnumerator, None, 
                        CLSCTX_ALL, IID_IMMDeviceEnumerator)
mmd = mmde.GetDefaultAudioEndpoint(eRender, eMultimedia)
mgr = mmd.Activate(IID_IAudioSessionManager)
sav = mgr.GetSimpleAudioVolume(None, True)
sav.SetMasterVolume(0.5)

【讨论】:

  • 我刚刚下载了 pywin32 并且有点迷路 - 我只是不知道如何使用它来执行此操作。你能解释一下如何使用 pywin32 来完成这个吗?
  • @user2662120:如果我要尝试在 SO cmets 部分编写 pywin32 客户端 COM 教程,那将比文档中已经存在的教程差得多,所以为什么不直接阅读它们?
  • 就个人而言,我认为文档很难阅读。如果你有时间,你能把伪代码翻译成实际的 python 代码吗?我一直在努力让它工作,但我被困在第一行 - 获取 CLSID 和 IID...
  • @AndreMiras 可以用它来控制单独应用的音量吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多