首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RegisterHotKey在应用程序中注册多个热键

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

Stack Overflow用户
提问于 2012-01-21 04:14:42
回答 1查看 1.4K关注 0票数 1

我正在使用registerHotKey在我的应用程序中设置多个热键

代码语言:javascript
复制
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);

这一切都是发现和花哨,但我困惑于我应该如何捕捉每一个。以下是按下热键时发生的过程:

代码语言:javascript
复制
 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的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-21 04:20:13

wParam值是调用RegisterHotKey时传递的id值。在本例中,它们是值addmanage

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

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

所有这些都在WM_HOTKEY的MSDN主题中进行了解释。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8947321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档