Windows 11音量设置与获取Python脚本偶发COM错误的解决求助
Windows 11音量设置与获取Python脚本偶发COM错误的解决求助
我写了个Python脚本,用来逐步调整Windows系统的音量,逻辑是从0到99循环设置音量值,每设置一次等待2秒,然后打印当前的系统音量百分比。脚本代码如下:
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume from ctypes import cast, POINTER from comtypes import CLSCTX_ALL, CoInitialize, CoUninitialize CLSCTX_ALL = 7 import time def set_windows_volume(value_max_100): devices = AudioUtilities.GetSpeakers() interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) volume = cast(interface, POINTER(IAudioEndpointVolume)) scalarVolume = int(value_max_100) / 100 volume.SetMasterVolumeLevelScalar(scalarVolume, None) def get_windows_volume(): devices = AudioUtilities.GetSpeakers() interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) windows_volume = cast(interface, POINTER(IAudioEndpointVolume)) volume_percentage = int(round(windows_volume.GetMasterVolumeLevelScalar() * 100)) return volume_percentage for i in range(0,100): set_windows_volume(i) time.sleep(2) print(get_windows_volume())
但运行过程中偶尔会抛出一堆COM相关的异常,核心错误日志如下(重复条目已简化):
Exception ignored in: <function _compointer_base.__del__ at 0x000002B538E96B90> Traceback (most recent call last): File "C:\Python\lib\site-packages\comtypes\_post_coinit\unknwn.py", line 426, in __del__ self.Release() File "C:\Python\lib\site-packages\comtypes\_post_coinit\unknwn.py", line 559, in Release return self.__com_Release() # type: ignore ValueError: COM method call without VTable # (多条重复的上述错误日志省略) ======== Running on http://192.168.1.188:8080 ======== Exception ignored in: <function _compointer_base.__del__ at 0x000002B538E96B90> Traceback (most recent call last): File "C:\Python\lib\site-packages\comtypes\_post_coinit\unknwn.py", line 426, in __del__ self.Release() File "C:\Python\lib\site-packages\comtypes\_post_coinit\unknwn.py", line 559, in Release return self.__com_Release() # type: ignore ValueError: COM method call without VTable
我实际是在multiprocessing.Process环境中运行这段逻辑的,已经加上了CoInitialize和CoUninitialize处理COM初始化,也尝试了安全释放相关的COM指针资源,但这个错误还是会时不时冒出来。
有没有大佬能帮忙分析下问题根源,或者有没有其他更稳定的实现Windows系统音量控制的替代方案?
备注:内容来源于stack exchange,提问作者Chris P
相关产品推荐
相关产品推荐

