在Windows 7上以编程方式更改系统范围的扬声器平衡
发布时间:2020-12-14 04:13:24 所属栏目:Windows 来源:网络整理
导读:如何在 Windows 7上以编程方式更改系统范围的扬声器平衡? (我只能用Python和AHK编程.) 首先安装python包Comtypes 使用pip install comtypes 要么 从https://pypi.python.org/pypi/comtypes下载然后解压缩下载文件夹.在解压缩的文件夹中找到setup.py.打开cmd
如何在
Windows 7上以编程方式更改系统范围的扬声器平衡?
(我只能用Python和AHK编程.)
首先安装python包Comtypes
>使用pip install comtypes 要么 现在只需运行code.py文件,您可以通过更改函数SetMasterVolumeLevel(-25,None)的第一个参数来调整音量,第一个参数必须介于-65到0之间. 请参阅最后一行代码以查找volume.SetMasterVolumeLevel(-25,None)并调整PC的音量 Code.py from comtypes import * import comtypes.client from ctypes import POINTER from ctypes.wintypes import DWORD,BOOL MMDeviceApiLib = 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}') pass class IAudioEndpointVolume(IUnknown): _iid_ = GUID('{5CDF2C82-841E-4546-9722-0CF74078229A}') _methods_ = [ STDMETHOD(HRESULT,'RegisterControlChangeNotify',[]),STDMETHOD(HRESULT,'UnregisterControlChangeNotify','GetChannelCount',COMMETHOD([],HRESULT,'SetMasterVolumeLevel',(['in'],c_float,'fLevelDB'),POINTER(GUID),'pguidEventContext') ),'SetMasterVolumeLevelScalar','GetMasterVolumeLevel',(['out','retval'],POINTER(c_float),'pfLevelDB') ),'GetMasterVolumeLevelScalar','SetChannelVolumeLevel',DWORD,'nChannel'),'SetChannelVolumeLevelScalar','GetChannelVolumeLevel','GetChannelVolumeLevelScalar','SetMute',BOOL,'bMute'),'GetMute',POINTER(BOOL),'pbMute') ),'GetVolumeStepInfo','pnStep'),'pnStepCount'),),'VolumeStepUp','VolumeStepDown','QueryHardwareSupport',POINTER(DWORD),'pdwHardwareSupportMask') ),'GetVolumeRange','pfMin'),'pfMax'),'pfIncr') ),] class IMMDevice(IUnknown): _iid_ = GUID('{D666063F-1587-4E43-81F1-B948E807363F}') _methods_ = [ COMMETHOD([],'Activate','iid'),'dwClsCtx'),'pActivationParans'),POINTER(POINTER(IAudioEndpointVolume)),'ppInterface') ),'OpenPropertyStore','GetId','GetState',[]) ] pass class IMMDeviceEnumerator(comtypes.IUnknown): _iid_ = GUID('{A95664D2-9614-4F35-A746-DE8DB63617E6}') _methods_ = [ COMMETHOD([],'EnumAudioEndpoints','dataFlow'),'dwStateMask'),POINTER(POINTER(IMMDeviceCollection)),'ppDevices') ),'GetDefaultAudioEndpoint','role'),POINTER(POINTER(IMMDevice)),'ppDevices') ) ] enumerator = comtypes.CoCreateInstance( CLSID_MMDeviceEnumerator,IMMDeviceEnumerator,comtypes.CLSCTX_INPROC_SERVER ) print enumerator endpoint = enumerator.GetDefaultAudioEndpoint( 0,1 ) print endpoint volume = endpoint.Activate( IID_IAudioEndpointVolume,comtypes.CLSCTX_INPROC_SERVER,None ) print volume print volume.GetMasterVolumeLevel() print volume.GetVolumeRange() #volume.SetMasterVolumeLevel(-65,None) uncomment for 0 volume #volume.SetMasterVolumeLevel(-1,None) uncomment for full volume volume.SetMasterVolumeLevel(-25,None) #Change the first argument for controlling the volume remember it should be -ve not less than -65 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 如何使用robocopy删除超过30天的文件?
- windows-server-2008 – 管理组织中的笔记本电脑和台式机,并
- windows – 在没有lodctr的情况下注册性能计数器
- 如何在Windows下使用NodeJS的db-mysql扩展?
- windows-server-2008-r2 – 长达一小时的关机时间“关闭hyp
- Windows – Active Directory GPO中的SID
- 如何软重启Windows Server 10 Technical Preview?
- windows – 强制任何正在运行的进程崩溃
- Windows – 从函数内部退出批处理脚本
- xaml – Windows 8 Metro:实施验证