钩子函数使用说明.pdf

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
钩子函数使用说明

Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息 的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获 并处理送给 其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子 可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。 这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完 成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见, 利用钩子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握 钩子的编程方法是很有必要的。 钩子的类型 一. 按事件分类,有如下的几种常用类型 (1) 键盘钩子和低级键盘钩子可以监视各种键盘消息。 (2) 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。 (3) 外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。 (4) 日志钩子可以记录从系统消息队列中取出的各种事件消息。 (5) 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。 此外,还有一些特定事件的钩子提供给我们使用,不一一列举。 下面描述常用的Hook类型: 1、WH_CALLWNDPROC和WH_CALLWNDPROCRETHooks WH_CALLWNDPROC和WH_CALLWNDPROCRETHooks使你可以监视发送到窗口 过程的消息。系统在消息发送到接收窗口过程之前调用WH_CALLWNDPROCHook 子程,并且在窗口过程处理完消息之后调用WH_CALLWNDPROCRETHook子程。 WH_CALLWNDPROCRETHook传递指针到CWPRETSTRUCT结构,再传递到Hook 子程。CWPRETSTRUCT结构包含了来自处理消息的窗口过程的返回值,同样也包 括了与这个消息关联的消息参数。 2、WH_CBTHook 在以下事件之前,系统都会调用WH_CBTHook子程,这些事件包括: 1.激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件; 2.完成系统指令; 3.来自系统消息队列中的移动鼠标,键盘事件; 4.设置输入焦点事件; 5.同步系统消息队列事件。 Hook子程的返回值确定系统是否允许或者防止这些操作中的一个。 3、WH_DEBUGHook 在系统调用系统中与其他Hook关联的Hook子程之前,系统会调用 WH_DEBUGHook子程。你可以使用这个Hook来决定是否允许系统调用与其他Hook 关联的Hook子程。 4、WH_FOREGROUNDIDLEHook Create PDF with GO2PDF for free, if you wish to remove this line, click here to buy Virtual PDF Printer 当应用程序的前台线程处于空闲状态时,可以使用WH_FOREGROUNDIDLE Hook执行低优先级的任务。当应用程序的前台线程大概要变成空闲状态时,系 统就会调用WH_FOREGROUNDIDLEHook子程。 5、WH_GETMESSAGEHook 应用程序使用WH_GETMESSAGEHook来监视从GetMessageorPeekMessage 函数返回的消息。你可以使用WH_GETMESSAGEHook去监视鼠标和键盘输入,以 及其他发送到消息队列中的消息。 6、WH_JOURNAL

文档评论(0)

wyw118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档