我如何改变它?
我正在寻找像这样的东西:
SetMasterVolume(0.5) SetAppVolume('FooBar',0.5)
我尝试使用ctypes.windll.winmm,但我找不到有关如何使用它的文档。
提前致谢。
我希望5年后,这对你来说不再是一个问题,但是我只需要做同样的事情。 可以使用PyCaw库。
简单的概念证明,基于PyCaw的例子
from __future__ import print_function from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume def main(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name() == "vlc.exe": print("volume.GetMasterVolume(): %s" % volume.GetMasterVolume()) volume.SetMasterVolume(0.6, None) if __name__ == "__main__": main()
第一个导入子流程import subprocess
然后获取主音量
def get_master_volume(self): proc = subprocess.Popen('/usr/bin/amixer sget Master', shell=True, stdout=subprocess.PIPE) amixer_stdout = proc.communicate()[0].split('\n')[4] proc.wait() find_start = amixer_stdout.find('[') + 1 find_end = amixer_stdout.find('%]', find_start) return float(amixer_stdout[find_start:find_end])
并设置主音量
def set_master_volume(self, widget): val = self.volume val = float(int(val)) proc = subprocess.Popen('/usr/bin/amixer sset Master ' + str(val) + '%', shell=True, stdout=subprocess.PIPE) proc.wait()
所以,而不是编辑我的旧的答案,我添加一个新的职位,让其他谁使用自己使用我的旧代码和任何人不是,使用我的新代码。
def get_master_volume(): proc = subprocess.Popen('/usr/bin/amixer sget Master', shell=True, stdout=subprocess.PIPE) amixer_stdout = proc.communicate()[0].split('\n')[4] proc.wait() find_start = amixer_stdout.find('[') + 1 find_end = amixer_stdout.find('%]', find_start) return float(amixer_stdout[find_start:find_end]) def set_master_volume(volume): val = float(int(volume)) proc = subprocess.Popen('/usr/bin/amixer sset Master ' + str(val) + '%', shell=True, stdout=subprocess.PIPE) proc.wait()