我正在使用registerHotKey
在我的应用程序中设置多个热键Win32.RegisterHotKey(hWndSource.Handle, add, Win32.MOD_CONTROL | Win32.MOD_SHIFT, Win32.VK_KEY_D);
Win32.RegisterHotKey(hWndSource.Handle, manage, Win32.MOD_CONTROL | Win32.MOD_SHIFT, Win32.VK_KEY_M);
这都是发现和花花公子,但我很困惑我应该抓住每一个。这是按下热键时发生的过程:
private IntPtr MainWindowProcCatchManageHotkey(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
switch (msg)
{
case Win32.WM_HOTKEY:
if (wParam == (IntPtr)(-16285))
{
CaptureManageHotkey();
}
if (wParam == (IntPtr)(-16303))
{
CaptureSelection();
}
handled = true;
break;
}
return IntPtr.Zero;
}
这是非常贫民窟。它的工作原理从我测试过的很少,但我不愿意在没有更好地了解正在发生的事情的情况下推动它。我知道测试wParam的值是什么的唯一原因是因为我运行了调试器并设置了一个断点,所以我可以看到传递给函数的内容。在某些地方,我可以在我的情况下查找lParam和wParam的值吗?我想捕捉ctrl + shift + d为一个,而ctrl + shift + m为另一个。我在哪里可以看到那些lParam和wParam应该是什么?
tl; dr我怎么知道我想要查找的lParam和wParam的值是什么?
答案 0 :(得分:3)
wParam
值是您调用id
时传递的RegisterHotKey
值。在这种情况下,它们是值add
和manage
。
lParam
值包含实际按下的组合键。
低位字指定要与高位字指定的键组合按下的键以生成
WM_HOTKEY
消息。
所有这些都在WM_HOTKEY
的MSDN主题中进行了解释。