標準SendMessageW()
methodを使用してコンソールアプリケーションからボリュームのミュートを解除しようとしています。しかし、explorer.exeの代わりにシェルとして実行している独自のアプリケーションがあります。ミュートを解除しようとすると何も起こりません。 Explorerを起動するとすぐに正常に動作します。メッセージを送信するためにエクスプローラを実行する必要がありますか?
コード:エクスプローラが必要な場合はSendMessageW()
からexplorer.exeが実行されていない場合、SendMessageW(...)を使用できますか?
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);
戻り値が0
で、誰もがミュート解除の別の方法を知っていますか?
側注は
私はvbsファイルを使用して、それを試してみました:
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
と同じ結果を得ました。 explorer.exeが実行されている場合のみミュートを解除します。