在没有 Window 焦点的情况下检测 Windows 上的按键

Detect Key Press on Windows Without Window Focus

我一直在网上搜索,但 Google 上的所有热门结果只会将我带到 Java。这令人沮丧。

我想做的是:制作一个监听键盘事件的程序,而不是活动程序。它必须至少在 windows 7 上工作,使用 C.

例如,假设我有 myprogram.exe 和 other.exe。我希望能够同时 运行 两者,并专注于 other.exe,然后按键,并在侧面显示 myprogram.exe 哪个 运行s 显示哪些键我按下并记录它们。

如果有人有 link 指南或信息来解释我应该使用什么来制作这个,那就太好了。如果你能自己写一个解释会更好,但我不介意浏览文档,只要它们是相关的。

我用 C 编写的游戏会听取活动 window 的输入,但我不确定如何在 window 未获得焦点时轮询事件。

如果要检测其他进程中发生的 'key press' 个事件,则应实现 Global Hook。您可以使用 SetWindowsHookEx() 定义键盘输入事件的回调函数。

请注意,回调函数必须在 DLL 中才能使其成为 Global Hook

所以你的 myprogram.exe 应该 link 一个实现挂钩的 dll。然后 myprogram.exe 将能够检测到 Windows.

上的任何键盘事件

下面是一个很好的例子和解释。 http://www.codeproject.com/Articles/1264/KeyBoard-Hooks