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