我正在编写Windows程序,我需要注册一个热键。但是,我担心RegisterHotKey()
引起的冲突。
此外,当您触发热键消息时,密钥事件将被阻止。例如,您调用RegisterHotkey(0, 0, MOD_NOREPEAT | MOD_ALT, VK_UP)
注册热键 ALT + ↑。如果您在explorer.exe中按 ALT + ↑,则explorer.exe无法收到此消息(原来 ALT + ↑在explorer.exe中升级。)
有没有办法注册热键而不会发生冲突和阻塞?
答案 0 :(得分:1)
RegisterHotKey
的MSDN页面说:
如果为热键指定的击键有,则
RegisterHotKey
失败 已被另一个热键注册。
以及:
返回值
输入:
BOOL
如果函数成功,则返回值为非零值。
如果函数失败,则返回值为零。要获得扩展错误 信息,请致电
GetLastError
。
换句话说,if(!RegisterHotKey(...)) ... deal with error ...
会捕获各种形式的“无法正常工作”,包括热键已经在使用 - 您需要查看GetLastError
来区分“密钥”已经在使用“和其他人。
我认为注册热键的重点在于,无论发生什么,您的应用程序始终都会获得该按键。如果它恰好是其他应用程序中的流行键,当然有点烦人,但它仍然是注册热键的重点。如果您不喜欢这种效果,那么请不要注册热键,或使用不太可能被其他应用程序使用的更加模糊的组合。不知道如何解决这个问题 - 如果你和你的应用程序一起运行IE,并且按下ALT-uparrow,你想要系统做什么?