用于组合的全局低级键盘挂钩

本文关键字:键盘 组合 全局 用于 | 更新日期: 2023-09-27 18:27:17

多亏了本教程,我知道如何做"全局低级键盘挂钩"

我还想监控组合键或快捷键,

我的想法是,我可以有一个标志数组,可以代表我的键盘键的上下状态。

简单地说,当falg为SET或1时,键向下,而当其为UNSET或0则键向上。

我可以将其用于组合键''快捷键。当一个键按下时,钩子将带我进入一个函数,在该函数中我将处理该事件。我要做的是,检查是否设置了任何其他特定的标志。如果是,那么这意味着同时按下两个键,因此我有了我的组合。

我能使这个把戏奏效。

我正在寻找一个更好的选择。有吗。

用于组合的全局低级键盘挂钩

是的,更好的选项是RegisterHotKey函数。

全局挂钩是一种非常沉重的方法,只应在绝对必要的情况下使用。在这种情况下,听起来不仅不需要全局挂钩,而且实际上实现起来比每次按下所需的键序列时自动生成的简单WM_HOTKEY消息更复杂。

由于您使用的是.NET,因此需要p/Invoke RegisterHotKey函数
定义如下:

[DllImport("user32.dll", SetLastError = true)]
static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);

WM_HOTKEY消息可以通过重写表单的WndProc方法(调用RegisterHotKey函数时指定其句柄的方法)来处理,该消息对应于以下值:

const int WM_HOTKEY = 0x0312;

RegisterHotKey函数的链接文档中明确提供了其他所需值。当然,这些文件是必读的;否则,您将错过重要的注意事项。