HHOOK WINAPI SetWindowsHookEx(
__in int idHook,
__in HOOKPROC lpfn,
__in HINSTANCE hMod,
__in DWORD dwThreadId
);在这个过程中,正如文档所说的,lpfn是指向钩子过程的指针。让钩子程序是:
keyboardProcessing(.....) {
}我怎么称呼这个钩子程序?即使我叫这个钩子程序,我怎么能收到击键呢?
请解释SetWindowsHookEx 是如何工作的,以及如何调用实际的程序员定义的钩子方法来处理键?
发布于 2012-05-23 10:49:49
SetWindowsHookEx函数用于为某些Windows事件注册自定义处理程序。来自MSDN:
将应用程序定义的钩子过程安装到钩子链中。您将安装一个钩子过程来监视系统中的某些类型的事件。这些事件与特定线程或与调用线程位于同一个桌面中的所有线程相关联。
这意味着,对于选定的钩子类型(例如,键盘事件),Windows将调用提供的过程(lpfn)通知发生了该类型的事件。例如,您可以使用它从键盘获取所有事件,即使它们没有定向到应用程序窗口(想象一下编写宏记录器)。
我怎么称呼这个钩子程序?
您不必调用该过程,您将在对SetWindowsHookEx的调用中提供它的地址,然后在需要时为您调用它。
即使我叫这个钩子程序,我怎么能收到击键呢?
如前所述,您不必调用它,如果您为WH_KEYBOARD注册了一个钩子,那么Windows将为每个键盘事件调用该过程。不要忘记在您的过程中调用CallNextHookEx,钩子是一个过程链,每个过程都负责调用链中的下一个过程。最后,在用UnhookWindowsHookEx退出应用程序之前释放钩子。
https://stackoverflow.com/questions/10718287
复制相似问题