防止其他窗口使用 windowsAPI "overriding"热键
Prevent other windows from "overriding" hotkeys with the windowsAPI
我正试图通过编写一个程序来学习windows API的基础知识,当按下PRINTSCREEN按钮时,将保存。jpeg并立即将其上传到imgur。目前,当我在玩大多数游戏或只是浏览桌面时,这个程序运行良好。
然而,有些游戏似乎阻止了我使用这个热键。(《黑暗之魂2》就是这么做的。)我现在使用
RegisterHotKey(NULL, 1, 0, VK_SNAPSHOT)
将按钮分配给我的程序。然而,当一些游戏正在运行时,当按下该键时,上面的RegisterHotKey和下面的GetAsyncKeyState都不起作用。
GetAsyncKeyState(VK_SNAPSHOT)
(我不想使用GetAsyncKeyState,因为它会一直调试windows API,使程序不必要地变慢,这只是为了测试。)
有谁知道阻止这种情况发生的方法吗?
(并且,在一个无关的注意事项上:如果这是一个简单的任务,我如何在多个显示器上截取屏幕截图?)我的目前只能在我的主显示器上工作…)
如果应用程序为其键盘映射使用原始输入,则键盘处理代码将绕过热键检查器。我个人不知道《黑暗之魂》是否做到了这一点,但我熟悉Windows内核代码,它负责键盘处理。
相关文章:
- 我是否需要包含隐式使用/与 WindowsAPI 通信"Windows.h"?
- clang C++17 std::vector over align type 使用 -mavx 编译时元素 SIGSE
- Array.at(index) over Array[index]
- C++ Iterating Over va_list
- 在 [over.ass]/2 的例子中,为什么 *bptr = dobj2;调用 D::operator=(const B&)?
- [over.unary]/2 中注释中提到的隐藏的编译示例
- 从 WindowsAPI 调用 NetLocalGroupAddMembers 时,安全 ID 结构无效错误
- 我们在哪里可以使用std::barrier over std::latch
- dynamic_cast over共享库在使用clang编译的Android上的Qt中失败
- 为什么选择 (;;){} over while(1).
- HBITMAP/BITMAP to BITMAPINFOHEADER -> over network - > BITMAPINFOHEADER to HBITMAP/BITMAP
- HTTP over TCP/IP?
- windowsapi richtextbox在c++中添加了额外的换行符
- OpenGL 2d HUD over 3d不会渲染任何内容
- std::max_element skip over NANs
- advantage of QString over std::string
- 在基于 Eclipse 的 IDE 中调试C++ - 是否有类似 "step over loop/cycle" 的东西?
- iterating over c++ map<int, list<int>>
- 如何使用windowsapi更改任务栏中的图标
- vector push_back over std::copy