windows零碎中钩子具有相当强大的功用, 经过这种技术可以对简直所有的windows零碎中的消息停止拦截、监视、处理。 这种技术可以普遍应用于各种软件, 尤其是需要有监控、自动记录等对零碎停止监测功用的软件。 本文针对这个专题停止了探讨, 希望可以为读者朋友们起到抛砖引玉的作用。
VB编程驱动的, 应用程序的操作都依赖于它所失掉的消息的类型及内容。 钩子与dos中缀截获处理机制有相似之处。 钩子(hook)是windows消息处理机制的一个平台, 经过安装各种钩子, 应用程序可以在上面设置子程序以监视指定窗口的某种消息, 并且当消息到达目的窗口之前处理它。
在windows中, 钩子有两种, 一种是零碎钩子(remotehook), 它对消息的监视是整个零碎范围, 另一种是线程钩子(localhook), 它的拦截范围只要进程外部的消息。 对于零碎钩子, 其钩子函数(hookfunction)应在windows零碎的静态链接库(dll)中完成, 而对于线程钩子来说, 钩子函数可以在dll之中完成, 也可以在相应的应用程序之中完成。 这是因为当开发人员创建一个钩子时, windows先在零碎内存中创建一个数据结构, 该数据结构包含了钩子的相关信息, 然后把该结构体加到曾经存在的钩子链表中去, 并且新的钩子将排在老的钩子的前面。 当一个事件发生时, 如果安装的是一个局部钩子, 以后进程中的钩子函数将被调用。 如果是一个远程钩子, 零碎就必需把钩子函数拔出到其它进程的地址空间, 要做到这一点就要求钩子函数必需在一个静态链接库中, 所以如果想要使用远程钩子, 就必需把该钩子函数放到静态链接库中去。 对于钩子所监视的消息类型来说, windws一共提供了如下几种类型:如表1所示:
文章由 女人缩阴有用吗整理,收集辛苦,希望能保留出处。
转载于:https://www.cnblogs.com/jiyizhen3721/archive/2011/05/15/2046805.html