wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows 7上以编程方式更改系统范围的扬声器平衡大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

如何在 Windows 7上以编程方式更改系统范围的扬声器平衡? (我只能用Python和AHK编程.) 首先安装python包Comtypes >使用pip install comtypes 要么 >从https://pypi.python.org/pypi/comtypes下载然后解压缩下载文件夹.在解压缩的文件夹中找到setup.py.打开cmd转到setup.py的路径,然后运行命令pyt
如何在 Windows 7上以编程方式更改系统范围的扬声器平衡?

(我只能用@L_696_1@和AHK编程.)

首先安装python包Comtypes

>使用pip install comtypes

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

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

请参阅最后一行代码以查找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@H_772_34@

大佬总结

以上是大佬教程为你收集整理的在Windows 7上以编程方式更改系统范围的扬声器平衡全部内容,希望文章能够帮你解决在Windows 7上以编程方式更改系统范围的扬声器平衡所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。