"http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx" rel=“nofollow”>SetWindowsHookEx 功能被用于登记一些 Windows事件的自定义处理器。 从 MSDN :
将一个应用程序定义的钩子程序安装到钩子链中。您将安装一个钩子程序来监视系统对某些类型的事件。这些事件或者与特定的线索相关联,或者与在同一个桌面上的线索和呼叫线索相关联。
这意味着,对于选中的钩子类型(例如键盘事件) 来说, Windows 会调用所提供的程序 ( lpfn
) 通知发生该类型事件。 例如, 您可以使用它从键盘上获取所有事件, 即使它们没有被指向您的应用程序窗口( 设想写入宏记录器) 。
我该怎么称呼这个钩子程序?
您不必调用该程序, 您会在调用 < code> SetWindowsHookEx code > 时提供其地址, 然后视窗会在需要时为您调用 。
即使我叫这个钩子程序 我怎样才能收到键盘?
As said you do not have to call it, if you register a hook for WH_KEYBOARD
then Windows will call that procedure for each keyboard event. Do not forget to call CallNextHookEx
inside your procedure, hook is a chain of procedures and each one is responsible to call the next procedure in the chain. Finally release the hook before you quit your application with UnhookWindowsHookEx.