我正在使用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的值?
发布于 2012-01-21 04:20:13
wParam值是调用RegisterHotKey时传递的id值。在本例中,它们是值add和manage。
lParam值包含实际按下的组合键。
低位字指定要与由高位字指定的键一起按下以生成
WM_HOTKEY消息的键。
所有这些都在WM_HOTKEY的MSDN主题中进行了解释。
https://stackoverflow.com/questions/8947321
复制相似问题