![]() |
1
3
不,这不重要。全局钩子需要带有回调的DLL。在所有正在运行的进程中都会注入该DLL。在调用UnHookWindowsHookEx()或进程终止(以先到者为准)之前,它将一直加载在进程中。 请注意,您也可以用WH\u keyboard LL钩住键盘。那是 一个全局钩子,Windows会将上下文切换到你的程序并进行回调。它更容易使用,因为您不需要一个带有全局钩子所需的注入DLL的IPC机制。低级钩子保持活动状态,直到您解除钩子、拥有消息队列的线程终止或进程终止(以先到者为准)。 |
![]() |
2
2
我的网站上有一个带有可下载代码的骨架键盘挂钩 here 源代码在示例中,它只需要一个makefile/sln构建(我不知道您将使用什么编译器/版本)。代码惊人地类似于已经在运输商业产品十年了,所以我 知道 请注意,完整性级别问题会降低Vista和W7中挂接的实用性。 |
![]() |
3
1
你的程序需要在挂接期间保持活动状态。您的程序是一个调用SetWindowsHookEx/UnSetWindowsHookEx(或任何它被调用的东西)的程序。在这些调用之间,确实会有一个消息循环(这可能是您所说的while循环),就像任何典型的windows程序一样。 但是,由于您的程序与正在挂接的程序是不同的进程,因此消息循环不会导致其他进程挂起。这叫做多任务:) |