1

ここにあるように、このグローバル キーボード フックを使用しています: Using global keyboard hook (WH_KEYBOARD_LL) in WPF / C#

それはうまく機能し、keydown イベントを処理するために小さなコードを使用します。

private void Klistener_KeyDown(object sender, RawKeyEventArgs e)
{
    if (e.Key == Key.Snapshot)
    {
        MessageBox.Show("Key Pressed!");
    }
}

ただし、Key.Snapshot に関連付けられている他のハンドラーは引き続き機能します。たとえば、キーの Windows の既定値は画面を印刷してクリップボードに保存しますが、ハンドラーの後に他のアクションを実行したくない場合はどうすればよいでしょうか?

私は使用しているキーボード フックに完全に精通しているわけではありませんが、e.Handled プロパティまたは KeyEventArgs に見られるようなものを実装する方法があるはずです。

これを行う方法について何か考えはありますか?ありがとう。

4

1 に答える 1

1

MSDN は次のように述べています。

フック プロシージャがメッセージを処理した場合、システムがフック チェーンの残りまたはターゲット ウィンドウ プロシージャにメッセージを渡さないようにするために、0 以外の値が返される場合があります。

LowLevelKeyboardProcしたがって、目的のキーが押された場合は、単に 1 を返す必要があります。それ以外の場合は、呼び出しを返しますCallNextHookEx

于 2013-07-03T08:59:56.487 に答える