防止全局键盘挂钩出现默认值

本文关键字:默认值 全局 键盘 | 更新日期: 2023-09-27 18:20:52

我正在使用这个全局键盘挂钩,如下所示:在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默认的密钥将打印屏幕并将其保存到剪贴板中,如果我不希望在处理程序之后发生任何其他操作,该怎么办?

我使用的Keyboard Hook并不完全流利,但我相信一定有一种方法可以实现e.Handled属性或KeyEventArgs中的类似属性。

你知道我该怎么做吗?谢谢

防止全局键盘挂钩出现默认值

MSDN说:

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

因此,如果按下了所需的键,您只需要在LowLevelKeyboardProc中返回1。否则,您将调用返回到CallNextHookEx