1

我正在使用此全局键盘挂钩,如下所示:在 WPF / C# 中使用全局键盘挂钩 (WH_KEYBOARD_LL)

它工作得很好,我使用一小段代码来处理 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 说:

如果钩子过程处理了消息,它可能会返回一个非零值,以防止系统将消息传递给钩子链的其余部分或目标窗口过程。

LowLevelKeyboardProc因此,如果按下了所需的键,您只需返回 1 即可。否则,您将呼叫返回CallNextHookEx

于 2013-07-03T08:59:56.487 回答