2011-08-20 27 views
0

我想获得一个按键信号,而不使用像getasynckeystate那样的钩子或键盘监控功能,这似乎过度地解决了我的问题。我需要一个可以在全局(在其创建的窗口之外)工作的函数,例如GetCursorPos,但是对于按键(按PageUp键)来触发一些自定义事件。感谢您提供任何指导。寻找一个类似于GetAsyncKeyState或GetCursorPos的功能

+3

你必须使用钩子。说你不想使用*设计的winapi功能来做你所需要的东西,不会让你得到任何地方。一个低级的键盘钩子很容易起来,它不是一个全局钩子。 –

+0

我同意@Hans。有一个简单的方法来做到这一点:它被称为钩子:) – noelicus

回答

0

我相信DirectInput可以做到这一点。很久以前,我的产品团队有一个语音应用程序,无论其他应用程序是否在前台,我们的应用程序都可以使用“即按即说”键。

如果内存服务器正确,我们使用DirectInput与专用线程侦听DInput来发送HEVENT句柄。当偶数线程醒来时,它会要求直接输入按键。如果这是我们的热门关键,我们取消了麦克风的静音(并在发生事件时将其静音)。

大多数DirectInput文档已经从MSDN中取消。 (由XInput取代)。我不知道xinput是否可以完成同样的事情。但是如果你能找到一个传统的DirectX SDK包(比如DirectX 8 SDK),那么包含的文档应该包含DirectInput所需的全部内容。