没有合适的资源?快使用搜索试试~ 我知道了~
Windows系统消息钩子函数入门
3星 · 超过75%的资源 需积分: 9 13 下载量 194 浏览量
2010-07-18
23:10:06
上传
评论 1
收藏 173KB PDF 举报
温馨提示
试读
15页
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而 钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成 普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消 息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特 定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用钩子可以实现许多特 殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。
资源推荐
资源详情
资源评论
消息钩子函数入门篇—编程爱好者网站 programfan.com
ProgramFan.com
编程爱好者收藏夹 http://myweb.pfan.cn
人才招聘频道启用新域名 http://job.pfan.cn
编程爱好者论坛新增软件测试技术讨论区
编程爱好者项目交易栏目 欢迎发布交易信息
欢迎光临编程爱好者ACM题库
欢迎光临编程爱好者论坛 http://bbs.pfan.cn
编程爱好者博客 http://blog.pfan.cn
回到首页 设为首页 加入收藏 网站留言
人才招聘频道
编程爱好者BLOG
编程爱好者论坛
首页 | 论坛 | 博客 | 人才招聘 | 书评 | 文章 | 资讯 | 下载 | 源码 | 项目交易 | 兴趣小组 | 网友作品 | 资源共享 | 收藏夹 | ACM题库 | VBAPI查询 | 刻盘服务
您所在的位置:编程爱好者网站 - 文档中心 - WINDOWS编程文章 - 正文
我要投稿 文章搜索
全新UCanCode E-Form++ 可视化图形源码组件库2009年第2版发布!(软博会金奖,全球上千家客户构建企业级应用首选!)
E-Form++企业版本V13.50发布: -- 全球领先,并提供含100%VC++源代码,免费源代码评估光盘发送中!
BMPN业务流程与工作流VC++源码 | 仪器仪表VC++源码 | 电子表单VC++源码 | 工控与仿真VC++源码 | CAD与GIS源码 | 电力系统VC++源
码 | 煤炭与军工行业VC++源码 | 城市管理行业VC++源码 | 图形建模VC++源码 | 逻辑电路图VC++源码 | 标签\票据\条码打印VC++源码 | 建
筑制图VC++源码等,提供全部100%高性能VC++源代码,为您节省数十个月开发时间
正式版本提供全部超过50万行高效VC++源代码, 全功能评估版本免费提供!
消息钩子函数入门篇
(加入日期:2003-10-23)
【收藏文章】【对此文发表评论】【保存文章至硬盘】【打印文章】【字体:大 中 小】
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而
钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成
普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消
息并进行处理。
这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特
定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。
可见,利用钩子可以实现许多特
殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。
钩子的类型
文章分类
http://www.programfan.com/article/2401.html(第 1/15 页)2010-3-7 7:24:09
当前分类
提交查询
消息钩子函数入门篇—编程爱好者网站 programfan.com
一. 按事件分类,有如下的几种常用类型
(
1) 键盘钩子和低级键盘钩子可以监视各种键盘消息。
(2) 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。
(3) 外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。
(4) 日志钩子可以记录从系统消息队列中取出的各种事件消息。
(5) 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。
此外,还有一些特定事件的钩子提供给我们使用,不一一列举。
下面描述常用的Hook类型:
1、WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks
WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks使你可
以监视发送到窗口过程的消息。系
统在消息发送到接收窗口过程之前调用WH_CALLWNDPROC Hook子程,并且在窗口过程处理完消
息之后调用WH_CALLWNDPRO
CRET Hook子程。WH_CALLWNDPROCRET Hook传递指针到CWPRETSTRUCT结构,再传递到
Hook子程。CWPRETSTRUCT结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个
消息关联的消息参数。
2、WH_CBT Hook
在以下事件之前,系统都会调用WH_CBT Hook子程,这些事件包括:
1. 激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件;
2. 完成系统指令;
3. 来自系统消息队列中的移动鼠标,键盘事件;
4. 设置输入焦点事件;
5. 同步系统消息队列事件。
Hook子程的返回值确定系统是否允许或者防止这些操作中的一个。
3、WH_DEBUG Hook
在系统调用系统中与其他Hook关联的Hook子程之前,系统会调用WH_DEBUG Hook子程。你可以使
用这个Hook来决定是否允许系统调用与其他Hook关联的Hook子程。
4、WH_FOREGROUNDIDLE Hook
当应用程序的前台线程处于空闲状态时,可以使用WH_FOREGROUNDIDLE Hook执行低优先级的任
务。当应用程序的前台线程大概要变成空闲状态时,系统就会调用WH_FOREGROUNDIDLE Hook子
● C/C++文章
● Visual Basic
● Visual C++
● C++ Builder
● Visual Foxpro
● Powerbuilder
● Delphi
● ASP
● ASP.net
● JAVA
● WINDOWS编程
● VB.net
● JSP
● 游戏开发
● 汇编语言
● 数据库开发
● Visual C#
● XML
● PHP
● 算法
● Linux文章
最新文章
● Oracle中最易忽视的两个重要进程
● 探秘Java 7新增垃圾回收器G1特性
● 在Asp.net MVC中使用Repeater
● Java按字节长度截取字符串
● Java解析XML文件的四种方法
● Java和.NET互操作:应该放弃Web Service吗
● 熟知Linux操作系统紧急情况处理方法
● 用PHP的PEAR DB模块编写数据库脚本
● (8)图形和图像编程(一)
http://www.programfan.com/article/2401.html(第 2/15 页)2010-3-7 7:24:09
消息钩子函数入门篇—编程爱好者网站 programfan.com
程。
5、WH_GETMESSAGE Hook
应用程序使用WH_GETMESSAGE Hook来监视从GetMessage or PeekMessage函数返回的消息。
你可以使用WH_GETMESSAGE Hook去监视鼠标和键盘输入,以及其他发送到消息队列中的消息。
6、WH_JOURNALPLAYBACK Hook
WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个Hook回放
通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要
WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的。
WH_JOURNALPLAYBACK Hook是全局Hook,它不能象线程特定Hook一样使用。
WH_JOURNALPLAYBACK Hook返回超时值,这个值告诉系统在处理来自回放Hook当前消息之前需
要等待多长时间(毫秒)。这就使Hook可以控制实时事件的回放。
WH_JOURNALPLAYBACK是
system-wide local hooks,它們不會被注射到任何行程位址空間。(估计按键精灵是用这个hook做
的)
7、WH_JOURNALRECORD Hook
WH_JOURNALRECORD Hook用来监视和记录输入事件。典型的,可以使用这个Hook记录连续的鼠
标和键盘事件,然后通过使用WH_JOURNALPLAYBACK Hook来回放。
WH_JOURNALRECORD
Hook是全局Hook,它不能象线程特定Hook一样使用。WH_JOURNALRECORD是system-wide
local hooks,它們不會被注射到任何行程位址空間。
8、WH_KEYBOARD Hook
在应用程序中,WH_KEYBOARD Hook用来监视WM_KEYDOWN and WM_KEYUP消息,这些消息
通过GetMessage or PeekMessage function返回
。可以使用这个Hook来监视输入到消息队列中的键
盘消息。
9、WH_KEYBOARD_LL Hook
WH_KEYBOARD_LL Hook监视输入到线程消息队列中的键盘消息。
10、WH_MOUSE Hook
WH_MOUSE Hook监视从GetMessage 或者 PeekMessage 函数返回的鼠标消息。使用这个Hook监
视输入到消息队列中的鼠标消息。
11、WH_MOUSE_LL Hook
WH_MOUSE_LL Hook监视输入到线程消息队列中的鼠标消息。
● (7)Visual Studio菜单和工具条编程实战
● Java源代码的折行规则
● Linux环境下入侵工具Knark的分析及防范
● 用C#实现全屏幕截图
● JAVA进阶:一个简单Thread缓冲池的实现
● Java语言中Timer类的简洁用法
● JAVA进阶:一个简单Thread缓冲池的实现
● JAVA进阶:一个简单Thread缓冲池的实现
● ASP.NET中实现模版的动态加载
● Java Swing中键盘事件的处理
● Java多线程设计模式:了解wait/notify机制
最新招聘信息
·C#软件工程师
·驱动工程师
·数据库工程师/管理员
·python 工程师
·VC程序员
·junior software engineer
·JAVA/J2EE高级软件工程师
·上海刚发布的若干软件职位
·游戏工程师 game engineer
·高级unix开发工程师
·3D图形引擎研究员
·客户端程序员
·服务器程序员
·JAVA工程师
·Flash AS工程师
·免费发布招聘信息
http://www.programfan.com/article/2401.html(第 3/15 页)2010-3-7 7:24:09
剩余14页未读,继续阅读
资源评论
- tuoya2202011-09-07内容是不错,但是直接把网页做成PDF,欺骗感情
- qianqianlan2013-04-23不错,例子也都挺简单的
ticktanchongkang
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功