挂钩程序

【勇芳软件工作室】汉化HomePreviousNext

为了利用特定类型的钩子,开发人员提供了一个挂钩过程,并使用SetWindowsHookEx功能将其安装到与挂钩相关联的链中。挂钩过程必须具有以下语法:

LRESULT CALLBACK 【HookProc】(
INT 【NCODE】,
WPARAM 【wParam中】,
LPARAM 【lParam的】)

【HookProc】是应用程序定义名称的占位符。

【NCODE】参数是一个挂钩代码,挂钩过程用于确定要执行的操作。钩子代码的值取决于钩子的类型;每种类型都有自己的特征集合的钩子代码。【wParam中】【lParam的】参数的值取决于挂钩代码,但通常包含有关发送或发布的消息的信息。

SetWindowsHookEx函数始终在钩子链的开头安装一个挂钩过程。当由特定类型的钩子监视的事件发生时,Windows将调用与钩子关联的钩子链开始处的过程。链中的每个挂钩过程确定是否将事件传递给下一个过程。挂钩过程通过调用CallNextHookEx函数将事件传递给下一个过程。

请注意,某些类型的钩子的挂钩过程只能监视消息。无论特定过程是否调用CallNextHookEx,Windows都会将消息传递给每个挂接过程。

挂钩过程可以是全局的,监视系统中所有线程的消息,或者它可以是线程特定的,仅针对单个线程监视消息。可以在任何应用程序的上下文中调用全局挂钩过程,因此该过程必须位于单独的动态链接库(DLL)模块中。线程特定的钩子过程仅在相关线程的上下文中调用。如果一个应用程序为自己的一个线程安装一个挂接过程,挂钩过程可以在与应用程序代码的其余部分或DLL中相同的模块中。如果应用程序为不同应用程序的线程安装了一个钩子过程,则该过程必须在一个DLL中。有关信息,请参阅动态链接库.

注意您应该仅使用全局钩子进行调试;否则你应该避免它们。全局钩子会影响系统性能,并导致与执行相同类型全局钩子的其他应用程序的冲突。