防止全局键盘挂钩出现默认值
本文关键字:默认值 全局 键盘 | 更新日期: 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