防止全局键盘挂钩上的默认设置

时间:2013-07-03 08:50:23

标签: c# wpf keyboard-hook

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

我不能完全熟悉我正在使用的Keyboard Hook,但我确信必须有一种方法来实现e.Handled属性或类似于KeyEventArgs中的类似。

我有什么想法会这样做吗?感谢。

1 个答案:

答案 0 :(得分:0)

MSDN说:

  

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

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