SendMessageW()
標準の方法を使用して、コンソール アプリから音量のミュートを解除しようとしています。ただし、explorer.exe ではなく、独自のアプリケーションをシェルとして実行しています。ミュートを解除しようとしても、何も起こりません。しかし、エクスプローラーを起動するとすぐに正常に動作します。メッセージを送信するには、エクスプローラーを実行する必要がありますか?
コード:
private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;
SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
からの戻り値SendMessageW()
は 0 です
。Explorer が必要な場合、ミュートを解除する別の方法を知っている人はいますか?
サイドノート
vbsを使用して試しました:
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
そして、同じ結果を得ました。explorer.exe が実行されている場合にのみ、ミュートが解除されます。