全局热键释放(keyup)?(WIN32 API)

8

有没有办法注意到使用RegisterHotKey注册的热键按钮的释放?

每次按下热键时,我都会收到一个WM_HOTKEY消息,但我需要知道何时释放该键。

2个回答

6

使用 RegisterHotkey 来检测按键按下,然后使用轮询和 GetAsyncKeyState 直到按键不再按下。这避免了使用 SetWindowsHookEx 的复杂性,并且轮询通常是可接受的,因为它只在按下热键时进行。


1
在我看来,如果你只有一个或几个热键,更好的解决方案是... - Njol
调用 GetKeyState 也可以工作,并且比 GetAsyncKeyState 更受欢迎。 - tigrou
@tigrou 为什么它更受欢迎? - NateS
过于频繁地调用 GetAsyncKeyState 可能会被杀毒软件检测为键盘记录器。 - tigrou
啊,使用防病毒垃圾的人应该得到这样的结果。 - NateS

5

针对这个特定的操作,没有特定的通知。您需要编写一个通过SetWindowsHookEx()实现全局键盘挂钩的DLL,然后您将收到单独的按键按下/弹起通知,并可以根据需要将它们匹配到WM_HOTKEY通知中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接