我正在尝试通过制作一个程序来学习 Windows API 的基础知识,当按下 PRINTSCREEN 按钮时,该程序将保存一个 .jpeg 并立即将其上传到 imgur。目前,当我玩大多数游戏或只是浏览桌面时,此程序运行良好。
但是,某些游戏似乎阻止了我使用此热键的能力。 (黑暗之魂 2 专门这样做。)我目前使用
RegisterHotKey(NULL, 1, 0, VK_SNAPSHOT)
将按钮分配给我的程序。但是,在某些游戏运行时,按键按下时,上面的RegisterHotKey和下面的GetAsyncKeyState都不工作。
GetAsyncKeyState(VK_SNAPSHOT)
(我不想使用 GetAsyncKeyState,因为它会不断窃听 Windows API 并使程序不必要地变慢,它只是为了测试。)
有谁知道阻止这种情况发生的方法吗?
(并且,在一个不相关的说明上:如果这是一个简单的任务,我将如何截取跨多个显示器的屏幕截图?我的目前只能在我的主显示器上工作...)
最佳答案
如果应用程序正在使用 raw input对于它的键盘映射,键盘处理代码会绕过热键检查器。我个人不知道 Dark Souls 是否这样做,但我熟悉执行键盘处理的 Windows 内核代码。
关于c++ - 使用 windowsAPI 防止其他窗口使用 "overriding"热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23819698/