防止其他窗口使用 windowsAPI "overriding"热键

Prevent other windows from "overriding" hotkeys with the windowsAPI

本文关键字:windowsAPI overriding 热键 其他 窗口      更新时间:2023-10-16

我正试图通过编写一个程序来学习windows API的基础知识,当按下PRINTSCREEN按钮时,将保存。jpeg并立即将其上传到imgur。目前,当我在玩大多数游戏或只是浏览桌面时,这个程序运行良好。

然而,有些游戏似乎阻止了我使用这个热键。(《黑暗之魂2》就是这么做的。)我现在使用

RegisterHotKey(NULL, 1, 0, VK_SNAPSHOT)

将按钮分配给我的程序。然而,当一些游戏正在运行时,当按下该键时,上面的RegisterHotKey和下面的GetAsyncKeyState都不起作用。

GetAsyncKeyState(VK_SNAPSHOT)

(我不想使用GetAsyncKeyState,因为它会一直调试windows API,使程序不必要地变慢,这只是为了测试。)

有谁知道阻止这种情况发生的方法吗?

(并且,在一个无关的注意事项上:如果这是一个简单的任务,我如何在多个显示器上截取屏幕截图?)我的目前只能在我的主显示器上工作…)

如果应用程序为其键盘映射使用原始输入,则键盘处理代码将绕过热键检查器。我个人不知道《黑暗之魂》是否做到了这一点,但我熟悉Windows内核代码,它负责键盘处理。