用于组合的全局低级键盘挂钩
本文关键字:键盘 组合 全局 用于 | 更新日期: 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
函数的链接文档中明确提供了其他所需值。当然,这些文件是必读的;否则,您将错过重要的注意事项。