栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Windows 7上以编程方式更改系统范围的扬声器平衡

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Windows 7上以编程方式更改系统范围的扬声器平衡

快捷方式(由@AndreMiras创建)->使用Pycaw,有关Pycaw的用法可在此处找到

详细方法->首先安装python软件包Comtypes

  1. 使用 pip install comtypes

要么

  1. 从https://pypi.python.org/pypi/comtypes下载,然后解压缩下载文件夹。在解压缩的文件夹中找到setup.py。打开cmd转到 setup.py 的路径,然后运行命令 python setup.py install

现在只需运行pre.py文件,您就可以通过更改函数 SetMasterVolumeLevel( -25
,None)
的第一个参数来调整音量,第一个参数必须在-65到0之间。我希望在Windows 8中尝试过此代码将在Windows 7上运行。

请参阅最后 行代码以找到 音量。SetMasterVolumeLevel(-25,None) 并调整PC的音量

代码

from comtypes import *import comtypes.clientfrom ctypes import POINTERfrom ctypes.wintypes import DWORD, BOOLMMDeviceApiLib =     GUID('{2FDAAFA3-7523-4F66-9957-9D5E7FE698F6}')IID_IMMDevice =     GUID('{D666063F-1587-4E43-81F1-B948E807363F}')IID_IMMDeviceEnumerator =     GUID('{A95664D2-9614-4F35-A746-DE8DB63617E6}')CLSID_MMDeviceEnumerator =     GUID('{BCDE0395-E52F-467C-8E3D-C4579291692E}')IID_IMMDeviceCollection =     GUID('{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}')IID_IAudioEndpointVolume =     GUID('{5CDF2C82-841E-4546-9722-0CF74078229A}')class IMMDeviceCollection(IUnknown):    _iid_ = GUID('{0BD7A1BE-7A1A-44DB-8397-CC5392387B5E}')    passclass IAudioEndpointVolume(IUnknown):    _iid_ = GUID('{5CDF2C82-841E-4546-9722-0CF74078229A}')    _methods_ = [        STDMETHOD(HRESULT, 'RegisterControlChangeNotify', []),        STDMETHOD(HRESULT, 'UnregisterControlChangeNotify', []),        STDMETHOD(HRESULT, 'GetChannelCount', []),        COMMETHOD([], HRESULT, 'SetMasterVolumeLevel', (['in'], c_float, 'fLevelDB'), (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'SetMasterVolumeLevelScalar', (['in'], c_float, 'fLevelDB'), (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'GetMasterVolumeLevel', (['out','retval'], POINTER(c_float), 'pfLevelDB')        ),        COMMETHOD([], HRESULT, 'GetMasterVolumeLevelScalar', (['out','retval'], POINTER(c_float), 'pfLevelDB')        ),        COMMETHOD([], HRESULT, 'SetChannelVolumeLevel', (['in'], DWORD, 'nChannel'), (['in'], c_float, 'fLevelDB'), (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'SetChannelVolumeLevelScalar', (['in'], DWORD, 'nChannel'), (['in'], c_float, 'fLevelDB'), (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'GetChannelVolumeLevel', (['in'], DWORD, 'nChannel'), (['out','retval'], POINTER(c_float), 'pfLevelDB')        ),        COMMETHOD([], HRESULT, 'GetChannelVolumeLevelScalar', (['in'], DWORD, 'nChannel'), (['out','retval'], POINTER(c_float), 'pfLevelDB')        ),        COMMETHOD([], HRESULT, 'SetMute', (['in'], BOOL, 'bMute'), (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'GetMute', (['out','retval'], POINTER(BOOL), 'pbMute')        ),        COMMETHOD([], HRESULT, 'GetVolumeStepInfo', (['out','retval'], POINTER(c_float), 'pnStep'), (['out','retval'], POINTER(c_float), 'pnStepCount'),        ),        COMMETHOD([], HRESULT, 'VolumeStepUp', (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'VolumeStepDown', (['in'], POINTER(GUID), 'pguidEventContext')        ),        COMMETHOD([], HRESULT, 'QueryHardwareSupport', (['out','retval'], POINTER(DWORD), 'pdwHardwareSupportMask')        ),        COMMETHOD([], HRESULT, 'GetVolumeRange', (['out','retval'], POINTER(c_float), 'pfMin'), (['out','retval'], POINTER(c_float), 'pfMax'), (['out','retval'], POINTER(c_float), 'pfIncr')        ),    ]class IMMDevice(IUnknown):    _iid_ = GUID('{D666063F-1587-4E43-81F1-B948E807363F}')    _methods_ = [        COMMETHOD([], HRESULT, 'Activate', (['in'], POINTER(GUID), 'iid'), (['in'], DWORD, 'dwClsCtx'), (['in'], POINTER(DWORD), 'pActivationParans'), (['out','retval'], POINTER(POINTER(IAudioEndpointVolume)), 'ppInterface')        ),        STDMETHOD(HRESULT, 'OpenPropertyStore', []),        STDMETHOD(HRESULT, 'GetId', []),        STDMETHOD(HRESULT, 'GetState', [])    ]    passclass IMMDeviceEnumerator(comtypes.IUnknown):    _iid_ = GUID('{A95664D2-9614-4F35-A746-DE8DB63617E6}')    _methods_ = [        COMMETHOD([], HRESULT, 'EnumAudioEndpoints', (['in'], DWORD, 'dataFlow'), (['in'], DWORD, 'dwStateMask'), (['out','retval'], POINTER(POINTER(IMMDeviceCollection)), 'ppDevices')        ),        COMMETHOD([], HRESULT, 'GetDefaultAudioEndpoint', (['in'], DWORD, 'dataFlow'), (['in'], DWORD, 'role'), (['out','retval'], POINTER(POINTER(IMMDevice)), 'ppDevices')        )    ]enumerator = comtypes.CoCreateInstance(     CLSID_MMDeviceEnumerator,    IMMDeviceEnumerator,    comtypes.CLSCTX_INPROC_SERVER)print enumeratorendpoint = enumerator.GetDefaultAudioEndpoint( 0, 1 )print endpointvolume = endpoint.Activate( IID_IAudioEndpointVolume, comtypes.CLSCTX_INPROC_SERVER, None )print volumeprint volume.GetMasterVolumeLevel()print volume.GetVolumeRange()#volume.SetMasterVolumeLevel(-65, None) uncomment for 0 volume#volume.SetMasterVolumeLevel(-1, None) uncomment for full volumevolume.SetMasterVolumeLevel(-25, None) #Change the first argument for controlling the volume remember it should be -ve not less than -65


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号