2017-09-14 95 views
2

因此,例如,我可以很容易地注册一个热键是Shift键的组合,Alt键(国防部键)和向上箭头:的Windows API - 注册有多个按键组合热键

RegisterHotKey(NULL, TOP, MOD_SHIFT | MOD_ALT, VK_UP);

这个工程只是罚款,但我后面注册一个热键与上面相同的键加上另一个正常的键,如左箭头,所以组合将是Shift,Alt,向上箭头,向左箭头。

没有在其他参数的函数空间,我试图做一个按位或为向上和向左箭头键,如

VK_UP | VK_LEFT

...但它不工作。如果有人遇到过这个问题或知道我如何继续请帮助!

+0

您无法使用热键API来完成此操作。如果在主热键被触发时按下第二个键,您可以尝试检查(使用'GetKeyState'),但是如果用户按“错误”顺序按下两个键,我怀疑它可能根本不会被触发。 –

+2

我的程序使用Shift + Alt + Up作为其快捷键之一。你的程序只是打破了我的程序。或换句话说,全球热键只适用于售货亭的情况,这种情况下你不需要它们! –

+0

@DavidHeffernan我相信RegisterHotkey(...)在尝试注册已经使用的热键时不起作用。 –

回答

1

Windows热键不支持多个(非修饰键)键。您不能按位或多个VK_*值,只有MOD_*值可以组合。

如果你非常需要这个功能,那么你必须使用low-level keyboard hook并自己跟踪这些密钥。挂钩会影响全局系统性能,应尽可能避免挂钩。

如果您决定这样做,您必须记住,Windows用户不习惯以这种方式按热键,只有菜单允许有点类似的模式,但您不必保持修改器的Alt以使这些工作。您还必须记得使用StickyKeys和其他辅助功能测试您的钩子...