有没有办法在窗口上注册热键而不会发生冲突

Is there a way to register hotkey on windows without conflict?

本文关键字:冲突 窗口 注册 有没有      更新时间:2023-10-16

我正在编写一个Windows程序,我需要注册一个热键。但是,我害怕RegisterHotKey()引起的冲突.

此外,当您触发热键消息时,关键事件会被阻止。例如,您调用RegisterHotkey(0, 0, MOD_NOREPEAT | MOD_ALT, VK_UP)注册热键 ALT + 。如果在资源管理器中按 ALT + ↑.exe,资源管理器.exe将不会收到此消息(最初 ALT + 在资源管理器中上升一个级别.exe(。

有没有办法注册热键而不会发生冲突和阻塞?

RegisterHotKey的 MSDN 页面说:

RegisterHotKey如果为热键指定的击键具有 已被另一个热键注册。

以及:

返回值

类型: BOOL

如果函数成功,则返回值为非零值。

如果函数失败,则返回值为零。获取扩展错误 信息,请拨打GetLastError

换句话说,if(!RegisterHotKey(...)) ... deal with error ...会捕获各种形式的"不起作用",包括热键已经在使用 - 您需要查看GetLastError以区分"密钥已在使用中"和其他。

我认为注册热键的全部意义在于,无论发生什么,您的应用程序总是获得该键。如果它碰巧是其他应用程序中的流行键,这当然有点烦人,但它仍然是注册热键的重点。如果您不喜欢这种效果,请不要注册热键,或使用不太可能被其他应用程序使用的更模糊的组合。不确定如何解决此问题 - 如果您将IE与您的应用程序一起运行,并且按下ALT-uparrow,您希望系统做什么?