由于this教程,我知道如何做“全局低级键盘挂钩”。
我还想监控组合键或快捷键,
我的想法是,我可以拥有一系列标志,可以代表键盘按键的向下状态。
当falg SET或1 时,按键关闭,当 UNSET或0 时,按键启动。
我可以将它用于组合键\快捷键。当一个键关闭时,钩子将把我带到一个我将处理事件的函数。我要做的是,检查是否设置了任何其他特定标志。如果是,那么这意味着同时按下两个键,因此我有我的组合。
我可以让这个技巧奏效。
我正在寻找的是一个更好的选择。有没有。
答案 0 :(得分:4)
是的,更好的选择是RegisterHotKey
function。
全局钩子是一种非常重的方法,只应在绝对必要的地方使用。在这种情况下,听起来不仅是不必要的全局钩子,而且实际上比每次按下所需的键序列时响应自动生成的简单WM_HOTKEY
message更复杂。
由于您使用的是.NET,因此需要P / Invoke RegisterHotKey
函数
定义看起来像这样:
[DllImport("user32.dll", SetLastError = true)]
static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
WM_HOTKEY
消息,您可以通过覆盖表单的WndProc
method(调用RegisterHotKey
函数时指定其句柄的消息)来处理,该消息对应于以下值: / p>
const int WM_HOTKEY = 0x0312;
RegisterHotKey
函数的链接文档中明确提供了其他必需值。当然,文档需要阅读;否则你会错过重要的警告。