質問: お世話になります。 C#で下記のことを行いたいのですが、WindowsAPI等で可能でしょうか。 * デフォルトの再生デバイスのマスターボリュームの取得および設定 * デフォルトの再生デバイスのミュート状態の取得および設定 とりあえず、WindowsVista以降の方法はわかったのですが、WindowsXPで実装する方法がわからずにいます。 何かアドバイスをいただけないでしょうか。 よろしくお願いいたします。
回答: 全般的な説明はAbout Audio Mixersから辿れます。ただし、ここから辿れるAPIリファレンスはリンクが壊れているため、Windows Multimediaを参照することをお勧めします。またAudio Mixers in Windows Vistaを参照するとわかりますが、XP以前向けの機能はVista以降の新APIとマッピングされているため、正しく作ればそのままVista以降でも動作します。 「デフォルトの再生デバイス」とありますが、Vista以降と異なり、XP以前ではどのアプリがどのラインに出力し、どのスピーカーにつながっているか等と把握できないため、結局のところデバイスID 0に出力するしかない状況です。 基本的な操作方法としては 1. `mixerOpen`で適切なミキサーを開く(`uMxId`はおおよそ`0`でいいです) 2. `mixerGetLineInfo`でラインを取得する 3. `mixerGetLineControls`でラインのボリュームコントロールやミュートコントロールを取得する 4. `mixerGetControlDetails`で各コントロールの現在値を取得したり、`mixerSetControlDetails`で値を更新したりする 5. `mixerClose`でミキサーを閉じる という手順になります。