快捷方式(由@AndreMiras创建)->使用Pycaw,有关Pycaw的用法可在此处找到
详细方法->首先安装python软件包Comtypes
- 使用 pip install comtypes
要么
- 从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


