频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

VB编程中钩子的实现及应用

来源:yesky 作者:刘涛 出处:巧巧读书 2006-02-12 进入讨论组
下一页 1 2 3 

  前言

  Windows系统中钩子具有相当强大的功能,通过这种技术可以对几乎所有的Windows 系统中的消息进行拦截、监视、处理。这种技术可以广泛应用于各种软件,尤其是需要有监控、自动记录等对系统进行监测功能的软件。
本文针对这个专题进行了探讨,希望可以为读者朋友们起到抛砖引玉的作用。

  一、钩子的机制及类型

  Windows的应用程序都是基于消息驱动的,应用程序的操作都依赖于它所得到的消息的类型及内容。钩子与Dos中断截获处理机制有类似之处。钩子(Hook)是Windows消息处理机制的一个平台,通过安装各种钩子,应用程序可以在上面设置子程序以监视指定窗口的某种消息,并且当消息到达目标窗口之前处理它。

  在Windows中,钩子有两种,一种是系统钩子(RemoteHook),它对消息的监视是整个系统范围,另一种是线程钩子(LocalHook),它的拦截范围只有进程内部的消息。对于系统钩子,其钩子函数(HookFunction)应在Windows系统的动态链接库(DLL)中实现,而对于线程钩子来说,钩子函数可以在DLL之中实现,也可以在相应的应用程序之中实现。这是因为当开发人员创建一个钩子时,Windows先在系统内存中创建一个数据结构,该数据结构包含了钩子的相关信息,然后把该结构体加到已经存在的钩子链表中去,并且新的钩子将排在老的钩子的前面。当一个事件发生时,如果安装的是一个局部钩子,当前进程中的钩子函数将被调用。如果是一个远程钩子,系统就必须把钩子函数插入到其它进程的地址空间,要做到这一点就要求钩子函数必须在一个动态链接库中,所以如果想要使用远程钩子,就必须把该钩子函数放到动态链接库中去。对于钩子所监视的消息类型来说,Windws一共提供了如下几种类型:如表1所示:

表一、Windows消息类型

消息类型常量标识 消息类型 适用范围
WH_CALLWNDPROC 4 发给窗口的消息 线程或系统
WH_CALLWNDPROCRET 12 窗口返回的消息 线程或系统
WH_CBT 5 窗口变化、焦点设定等消息 线程或系统
WH_DEBUG 9 是否执行其它Hook的Hook 线程或系统
WH_FOREGROUNDIDLE 11 前台程序空闲 线程或系统
WH_GETMESSAGE 3 投放至消息队列中的消息 线程或系统
WH_JOURNALPLAYBACK 1 将所记载的消息进行回放 系统
WH_JOURNALRECORD 0 监视并记录输入消息 系统
WH_KEYBOARD 2 键盘消息 线程或系统
WH_MOUSE 7 鼠标消息 线程或系统
WH_MSGFILTER -1 菜单滚动条、对话框消息 线程或系统
WH_SHELL 10 外壳程序的消息 线程或系统
WH_SYSMSGFILTER 6 所有线程的菜单滚动条、对话框消息 系统
查看 http://www.qqread.com/vb/i822353100.html 更多文章 更多内容请看Java编程开发手册专题,或进入讨论组讨论。
下一页 1 2 3 
收藏此文】【 】【打印】【关闭
较早的文章:VB中检测是否连网

较新的文章:Visual Basic开发要点三则
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章