Advanced/W-ZERO3[es]ことWS011SHにはスピーカー音量とイヤホンマイク音量を独立して変更できる設定項目があります。
これがどういった時に便利かといえば、例えばスピーカー音量だけをゼロにしておくことで、イヤホンマイクで音楽を聴いている時にコネクタが抜けても辺りに音楽が鳴り響かなくて済むわけですね。
スピーカー音量をゼロにしたり100にしたりの為だけにコントロールパネルを呼び出すのも煩雑なので、レジストリ項目を直接変更するMortScriptを書いてみましたが、これは残念なことに期待通りには動きませんでした。
ソフトリセットすれば動作に反映されるものの、手間を省くという目的は達せられません。レジストリ値を変えるだけでなく、何らかのイベントや関数の発行が必要なようです。
今回はそこまで調べ切れていないので、失敗の記録、または途中経過として残しておきます。
6月16日追記: 手元のスクリプトと内容が違っていたので変更。レジストリ値に別のを参照していました。
# headphone_mode.mscr
# 音量の指定値を2パターン持っておきトグルする(失敗)
# レジストリ項目は書き換わるものの動作に反映されない。
# ユーザ設定 スピーカーモード時の音量
speakerVolumeSpkMode = 100
headPhoneVolumeSpkMode = 0
# ユーザ設定 ヘッドフォンモード時の音量
speakerVolumeHPMode = 0
headPhoneVolumeHPMode = 70
# 処理開始
spkVol = RegRead(HKLM, "Drivers\BuiltIn\WaveDev\ShConfig", "PdaSpkVolRate")
hpVol = RegRead(HKLM, "Drivers\BuiltIn\WaveDev\ShConfig", "PdaHPVolRate")
If(spkVol < hpVol)
x = speakerVolumeSpkMode
y = headPhoneVolumeSpkMode
str = "Speaker Mode."
Else
x = speakerVolumeHPMode
y = headPhoneVolumeHPMode
str = "HeadPhone Mode."
EndIf
RegWriteDWord(HKLM, "Drivers\BuiltIn\WaveDev\ShConfig", "PdaSpkVolRate", x)
RegWriteDWord(HKLM, "Drivers\BuiltIn\WaveDev\ShConfig", "PdaHPVolRate", y)
Message(str)
