防止其他窗口超越"覆盖"与windowsAPI的热键

时间:2014-05-23 01:31:59

标签: c++ windows winapi

我试图通过制作一个程序来学习Windows API的基础知识,当按下PRINTSCREEN按钮时,它将保存.jpeg并立即将其上传到imgur。目前,虽然我玩大多数游戏或只是浏览桌面,但这个程序运行正常。

然而,有些游戏似乎阻碍了我使用这个热键的能力。 (Dark Souls 2专门做到这一点。)我目前使用

RegisterHotKey(NULL, 1, 0, VK_SNAPSHOT)

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

GetAsyncKeyState(VK_SNAPSHOT)

(我不想使用GetAsyncKeyState,因为它会继续窃听Windows API并使程序不必要地变慢,这只是为了测试。)

有没有人知道如何阻止这种情况发生?

(并且,在一个不相关的说明:如果这是一个简单的任务,我如何截取跨越多个监视器的屏幕截图?我目前仅在我的主监视器上工作...)

1 个答案:

答案 0 :(得分:1)

如果应用程序使用raw input进行键盘映射,则键盘处理代码会绕过热键检查程序​​。我个人不知道Dark Souls是否这样做,但我熟悉进行键盘处理的Windows内核代码。