在没有 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
我一直在网上搜索,但 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