windows 如何使用python/pycaw简单地获取PC的主卷

daupos2t  于 2023-05-08  发布在  Windows
关注(0)|答案(1)|浏览(233)

9个月前,一位先生问了这个问题。它从来没有得到正确的回答,线程被关闭。他被告知这样做:
在Windows上,使用pycaw:

from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(
IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))

volume.GetMasterVolumeLevelScalar()

有了这个,线程被关闭,但这不是答案,这个标量级别不是系统托盘中PC监视器上显示的主卷的0- 100级别。我已经安装了pycaw和comtypes,目前使用的是python3.11.1。我已经把上面所有的命令都输入到我的python中了。请问我可以知道使用什么命令来获得我的主卷的确切输出。如果我的电脑体积是50,我希望输出为50。使用上述指令,在pc卷级别100处,标量级别输出为1。这对我来说毫无价值。请帮帮我
我试着用命令
volume.GetMasterVolume()
希望能得到大师级的回报。我得到了一个错误:

>>> volume.GetMasterVolume()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'POINTER(IAudioEndpointVolume)' object has no attribute 'GetMasterVolume'. Did      you mean: 'GetMasterVolumeLevel'?

所以我尝试了volume.GetMasterVolumeLevel(),在100主音量时,它返回了0.0,再次毫无价值。
为什么volume.GetMasterVolume()不起作用?我该怎么做才能让它起作用?

r3i60tvu

r3i60tvu1#

Woohoo!!当人类失败时,依靠人工智能:)此外,是时候在人工智能毁灭世界之前,我从它那里得到一些东西了。我是在EvenGhost程序论坛上的一个用户给我的使用ChatGTP的想法,只花了两次尝试就得到了我想要的。这是Python 3.11.1的Python脚本,它可以打印出你的PC的真实体积。没有分贝,没有wierd百分比水平,只是真正的音量:

from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume

# Get the default audio device
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(IAudioEndpointVolume._iid_, 0, None)

# Cast the interface to an IAudioEndpointVolume object
volume = interface.QueryInterface(IAudioEndpointVolume)

# Get the current master volume level
master_volume = volume.GetMasterVolumeLevelScalar() * 100

# Print the current master volume level
print("Current master volume level: {:.2f}".format(master_volume))

当我手动拖动我的滑块到27%音量并运行脚本时,我得到了26.97%的回报,当我使用脚本将音量设置为50%然后启动此脚本时,我得到了50.00%的回报,当我将滑块设置为最大值并运行此脚本时,我得到了100.00%的回报。我完全按照我的意愿工作,我怀疑正是9个月前的行动所寻找的。我会努力找到他,把他变成这样:)

相关问题