2

我想为键盘钩子创建一个好的库。我使用了 SetWindowsHookEx 方法,我注意到如果我的应用程序的主线程很忙,则不会执行应该在任何系统 KeyDown 事件中调用的方法 hookProc。我认为钩子应该这样制作,另一个线程将对此负责。那可能吗?我该怎么做?

4

1 回答 1

1

LowLevelKeyboardProc的 Microsoft 帮助页面提到

如果钩子过程超时,系统将消息传递给下一个钩子。但是,在 Windows 7 及更高版本上,该挂钩会在不被调用的情况下被静默删除。应用程序无法知道挂钩是否被移除。

我怀疑这就是发生在你身上的事情。您的 HookProc 函数应该非常快:我所做的只是将关键事件推送到 std::vector 中。真正的代码在另一个线程中执行。

于 2012-06-01T17:04:26.533 回答