Python:更改Windows 7主音量

5
我希望能够用Python控制主音量(不仅仅是应用程序,而是当前活动扬声器的音量)。这似乎是一个棘手的话题;我尝试在C#中完成它,但甚至在那里也无法使其工作。有没有一种方法可以实现这个目标?(Windows 7 x64)
请注意,此问题之前并没有得到解答,因为我的问题特别涉及Python。此外,VonC提到的项目在Windows 7上无法使用。

您可能想看一下VonC的回答,而不是被接受的回答,因为您只关心Windows 7,所以不需要更加复杂的XP兼容代码。 - abarnert
1个回答

4
通过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)

1
我刚刚下载了pywin32,但有点迷失-我不知道如何使用它来完成这个任务。您能否好心解释一下如何使用pywin32来实现这个? - Salomon V
1
如果我试图在SO评论部分编写一个pywin32客户端COM教程,那将比文档中已经存在的教程更糟糕,为什么不直接阅读它们呢? - abarnert
2
就我个人而言,我认为这份文档很难读懂。如果您有时间,能否将伪代码翻译成实际的Python代码?我一直在尝试让它工作,但我卡在了第一行 - 获取CLSID和IID... - Salomon V
@AndreMiras 这个能控制各个应用的音量吗? - Vlady Veselinov
@VladyVeselinov 是的 https://github.com/AndreMiras/pycaw/blob/v20160929/examples/volume_by_process_example.py - Andre Miras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接