我钩住键盘中的应用程序。要求是在进程中的所有线程钩键盘。

我用SetWindowsHookEx函数API

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)::KeyboardHookProc, hInst, 0);

时,用于处理的所有线程创建的钩。 这工作得很好,直到调用线程很快就存在。作为与调用线程终止钩停止工作。

是否有任何方式挂钩过程而非线程进程。

有帮助吗?

解决方案

在SDK文档为LowLevelKeyboardProc这小字是至关重要的:

该钩子被称为在安装它的线程的上下文中。该呼叫通过发送消息给安装钩子的线。因此,安装了钩线必须有一个消息循环。

在换句话说,你必须保持线程活着,线程必须泵消息循环。您现在看到的行为是完全由设计。

其他提示

按照MSDN,的 WH__KEYBOARD ___ LL 全局应用不应用特定的。

如果你想安装钩子过程特定线程使用 WH ___键盘

只要在主函数安装钩子。如果你需要它,只有当特定线程运行时,您可以使用挥发性标志。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top