有没有办法在窗口上注册热键而不会发生冲突
Is there a way to register hotkey on windows without conflict?
我正在编写一个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,您希望系统做什么?
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 写入位置0x0000000C时发生访问冲突
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 链表中写入访问冲突的未知原因
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 有没有办法在窗口上注册热键而不会发生冲突
- 试图创建SFML窗口时发生访问冲突
- 窗口和限制的冲突
- 访问冲突读取位置0xfeeefef2多线程编程c++窗口