2011-12-19 85 views
0

我试图用一些键绑定(F1-F12)来创建一个程序,它将在聚焦时(特别是在游戏运行时)拿起按键。键盘钩子没有使用DLL?

无论如何检测这些按键而不使用全局钩子?我正在编程的语言(真正的工作室)没有创建一个DLL(全局钩子需要)的手段,再加上,我希望它与Mac(这是realstudio所做的)跨平台。

+0

你使用什么编程语言?如果这会有所帮助,我可以用一些示例代码更新我的答案。 – 2011-12-19 13:36:03

回答

0

虽然正如klartex所说,低级别的键盘/鼠标钩子不需要DLL(与所有其他类型的钩子不同),但是对于你想要完成的任务来说,任何类型的钩子肯定是矫枉过正的。

所有你需要的是RegisterHotKey function,它允许用户注册的任意键(或键的组合),其为全系统的热键。这可以满足您即使在应用程序焦点不清的情况下也能够按下按键的要求。

作为奖励,RegisterHotKey不需要DLL,也不像系统范围的钩子那样“沉重”。挂钩对性能有负面影响;你不应该看到RegisterHotKey

一旦通过调用该函数注册了一个热键,就可以在应用程序的窗口过程中处理WM_HOTKEY messages。完成之后,请确保您拨打UnregisterHotKey function以取消注册您的应用程序以处理该热键。

这里唯一需要注意的文件中提到:

F12键保留在任何时候都调试器使用,所以它不应该被注册为热键。即使在您未调试应用程序时,F12也会保留以防内核模式调试程序或即时调试程序驻留。

但是,如果您要安装低级键盘挂钩,同样的问题将适用。 F12只是不是一个好的候选热键,不管应用程序如何。如果你绝对必须使用它,风险自负。

+0

非常感谢您的回复! :) 幸运的是,我不需要F12,但感谢您的支持。 非常感谢。与所有其他答复一样。 – lukus001 2011-12-19 15:14:21

+0

我知道这是一个老话题,但现在已经开始“完成”应用程序。 我已经设法使用注册热键,但它在我打算在期间使用的游戏中不起作用?是否有任何理由不通过游戏? – lukus001 2012-03-30 20:53:27