我使用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; }
这是相当贫民窟。 它是从我testing过的那个小作品开始的,但是如果没有对发生的事情有更好的理解,我不愿意推它。 我知道什么值testingwParam反对的唯一原因是因为我运行debugging器,并设置一个断点,所以我可以看到什么被传递到函数。 在我的情况下,有什么地方可以查找lParam和wParam的值吗? 我想赶上Ctrl + Shift + D为一个,而Ctrl + Shift + M为另一个。 我在哪里可以看到那些lParam和wParam应该是什么?
tl; dr我怎么知道我想要查找的lParam和wParam的值?
wParam
值是您在调用RegisterHotKey
时传递的id
值。 在这种情况下,他们是add
和manage
的价值。
lParam
值包含实际按下的组合键。
低位字指定要与高位字指定的键组合在一起按下的键,以生成
WM_HOTKEY
消息。
这一切都在WM_HOTKEY
的MSDN主题中WM_HOTKEY
。