KeyDown および KeyPress イベントを介してキーストロークを監視する C# アプリがあります。具体的には、(ハンドヘルド デバイスからの) VolumeMute キーストロークを監視して、特別な処理を行います。Windows が VolumeMute キーストロークを傍受し、システム ボリュームをミュートするようです (これは望ましくありません)。キーストロークが処理されたことを通知しても (e.Handled = true)、とにかくシステムの音量がミュートされるため、Windows はアプリによって処理される前にキーストロークをインターセプトすると思います。ところで、同じコードは、私がキャッチしている他のキーストローク (バックスペースなど) に対しても完全に機能します。
Windows がこの音量ミュートを行うのを止める方法はありますか?
システム: WinXP SP3、.Net 4 クライアント プロファイル、Windows フォーム アプリ
コードスニップ
bool keyHandled = false;
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (keyHandled)
{
e.Handled = true;
}
}
// =====================================
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
keyHandled = false;
switch (e.KeyCode)
{
case Keys.VolumeMute:
DoSpecialProcessing();
keyHandled = true;
break;
default:
break;
}
e.Handled = keyHandled;
}