无法安装所有线程钩子过程
-
21-09-2019 - |
题
我钩住键盘中的应用程序。要求是在进程中的所有线程钩键盘。
我用SetWindowsHookEx函数API
SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)::KeyboardHookProc, hInst, 0);
时,用于处理的所有线程创建的钩。 这工作得很好,直到调用线程很快就存在。作为与调用线程终止钩停止工作。
是否有任何方式挂钩过程而非线程进程。
解决方案
在SDK文档为LowLevelKeyboardProc这小字是至关重要的:
该钩子被称为在安装它的线程的上下文中。该呼叫通过发送消息给安装钩子的线。因此,安装了钩线必须有一个消息循环。
在换句话说,你必须保持线程活着,线程必须泵消息循环。您现在看到的行为是完全由设计。
其他提示
按照MSDN,的 WH__KEYBOARD ___ LL 强>全局应用不应用特定的。
如果你想安装钩子过程特定线程使用 WH ___键盘
只要在主函数安装钩子。如果你需要它,只有当特定线程运行时,您可以使用挥发性标志。
不隶属于 StackOverflow