我最近在和一些人谈论我正在编写的程序时听到了“hook”这个词。我不确定这个术语到底意味着什么,尽管我从对话中推断钩子是一种函数类型。我寻找一个定义,但无法找到一个好的答案。有没有人能告诉我这个术语的一般含义,或者举个小例子来说明这个定义?


当前回答

从本质上讲,它是代码中的一个地方,允许您进入一个模块来提供不同的行为或在发生某事时做出反应。

其他回答

通常挂钩指的是Win32消息挂钩或Linux/OSX的等等物,但更一般的挂钩只是通知另一个对象/窗口/程序等,当指定的操作发生时,你想被通知。例如:让系统上的所有窗口在即将关闭时通知您。

作为一般规则,钩子有点危险,因为在不了解它如何影响系统的情况下这样做可能会导致不稳定或至少是意想不到的行为。在某些情况下,它也非常有用。例如:FRAPS使用它来确定应该在哪个窗口显示FPS计数器。

当遇到某些条件时,可以执行钩子。例如,一些变量发生了变化,或者调用了一些动作,或者发生了一些事件。hook可以进入过程并更改内容或对更改作出反应。

简单的说:

钩子是在现有代码之前、之后或代替现有代码执行自定义代码(函数)的一种方法。例如,为了在继续正常登录过程之前执行验证码函数,可以编写一个函数“hook”到登录过程中。

一个函数,允许您提供另一个函数,而不仅仅是一个值作为参数,本质上是扩展它。

编程中的钩子是一种技术,它使用所谓的钩子来创建一个过程链作为事件处理程序。