Pythonの abarnert による提案から外れる: Windows 7 のマスター ボリュームを変更する
Windows 7 でマスター ボリュームを制御する Python スクリプトを作成しようとしています。
C ++では、これは次のように実行できることを理解しています:
const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
mmde = CoCreateInstance(
CLSID_MMDeviceEnumerator, NULL,
CLSCTX_ALL, IID_IMMDeviceEnumerator,
(void**)&pEnumerator);
mmd = mmde.GetDefaultAudioEndpoint(eRender, eMultimedia);
mgr = mmd.Activate(IID_IAudioSessionManager);
sav = mgr.GetSimpleAudioVolume(None, True);
sav.SetMasterVolume(0.5);
pywin32を使用して python でその機能を取得しようとしていますが、行き詰まっています。私がこれまでに持っているコードは次のとおりです。
import pythoncom
CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator)
IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator)
mmde = pythoncom.CoCreateInstance(CLSID_MMDeviceEnumerator, None, CLSCTX_ALL, IID_IMMDeviceEnumerator)
mmd = mmde.GetDefaultAudioEndpoint(eRender, eMultimedia)
mgr = mmd.Activate(IID_IAudioSessionManager)
sav = mgr.GetSimpleAudioVolume(None, True)
sav.SetMasterVolume(0.5)
CoCreateInstance は MMDeviceEnumerator のクラス ID (CLSID) を必要としますが、クラス ID を取得するために使用する __uuidof() のような関数はないようです。(とにかく見つけたわけではありません。)
アイデアや提案はありますか?私は COM/OLE プログラミングと pywin32 の両方に不慣れで、少し戸惑っています。