2016-05-12 83 views
0

我一直在线上搜索,但Google上的所有顶级搜索结果只能将我引向Java。这令人沮丧。在没有窗口焦点的情况下在Windows上检测按键

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

例如让我说我有myprogram.exe和other.exe。我希望能够同时运行它们,并专注于other.exe,然后按下按键,然后让myprogram.exe在侧面显示屏上运行,并按下并按下它们。

如果有人链接到一个指南或信息,说明我应该用什么来做到这一点,那将是盛大的。如果你可以自己写一个更好的解释,但我不介意只要它们相关,就通读文档。

我已经用C语言编写了一个游戏,用于监听来自活动窗口的输入,但是我不确定如何在窗口未聚焦时轮询事件。

+2

你想要一个键盘记录器,它通常使用窗口钩子实现。 – MicroVirus

+1

你需要一个全局钩子。更多信息在这里:https://msdn.microsoft.com/en-gb/library/windows/desktop/ms644959%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396#wh_keyboardhook和一个例子在这里:http ://ntcoder.com/bab/2007/06/12/wh_keyboard_ll/ –

+0

是[this](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646268(v = vs.85) ).aspx)你在找什么? – bluepinto

回答

1

如果您想要检测其他进程中发生的'按键'事件,则应该执行Global Hook。您可以使用SetWindowsHookEx()为键盘输入事件定义回调函数。

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

因此,你的myprogram.exe应该链接一个DLL实现挂钩。然后,myprogram.exe将能够检测到Windows上的任何键盘事件。

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

+0

感谢大家。所有帮助 – Aqo

相关问题