使用RegisterHotKey在应用程序中注册多个热键

我使用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值。 在这种情况下,他们是addmanage的价值。

lParam值包含实际按下的组合键。

低位字指定要与高位字指定的键组合在一起按下的键,以生成WM_HOTKEY消息。

这一切都在WM_HOTKEY的MSDN主题中WM_HOTKEY