字体
第(2/4)页
关灯
   存书签 书架管理 返回目录


    按事件分类,钩子函数有如下几种常用类型。

    ? 键盘钩子和低级键盘钩子可以监视各种键盘消息;

    ? 鼠标钩子和低级鼠标钩子可以监视各种鼠标消息;

    ? 外壳钩子可以监视各种Shell 事件消息。比如启动和关闭应用程序;

    ? 日志钩子可以记录从系统消息队列中取出的各种事件消息;

    ? 窗口过程钩子监视所有从系统消息队列发往目标窗口的消息。

    下面对常用的Hook 类型进行介绍:

    (1)WH_CALLWNDPROC 和WH_CALLWNDPROCRET Hooks

    WH_CALLWNDPROC 和WH_CALLWNDPROCRET Hooks 可以监视发送到窗口过

    程的消息。系统在消息发送到接收窗口过程之前调用WH_CALLWNDPROC Hook 子程,

    并且在窗口过程处理完消息之后调用WH_CALLWNDPROCRET Hook 子程。

    WH_CALLWNDPROCRET Hook 传递指针到CWPRETSTRUCT 结构,再传递到Hook 子程。

    CWPRETSTRUCT 结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个消息

    关联的消息参数。

    (2)WH_CBT Hook

    在如下事件之前,系统都会调用WH_CBT Hook 子程。

    ? 激活、建立、销毁、最小化、最大化、移动、改变尺寸等窗口事件。

    ? 完成系统指令。

    ? 来自系统消息队列中的移动鼠标、键盘事件。

    ? 设置输入焦点事件。

    ? 同步系统消息队列事件。

    ? Hook 子程的返回值确定系统是否允许或者防止这些cāo作中的一个。

    枫叶文学网www.fywxw.com

    Visual C++ 6.0 程序设计从入门到精通

    ·272·

    (3)WH_DEBUG Hook

    在系统调用系统中与其他Hook 关联的Hook 子程之前,系统会调用WH_DEBUG Hook

    子程。可以使用这个Hook 来决定是否允许系统调用与其他Hook 关联的Hook 子程。

    (4)WH_FOREGROUNDIDLE Hook

    当应用程序的前台线程处于空闲状态时,可以使用WH_FOREGROUNDIDLE Hook 执行

    低优先级的任务。当应用程序的前台线程要变成空闲状态时, 系统就会调用

    WH_FOREGROUNDIDLE Hook 子程。

    (5)WH_GETMESSAGE Hook

    应用程序用WH_GETMESSAGE Hook 来监视从GetMessage 或者PeekMessage 函数返回

    的消息。可以使用WH_GETMESSAGE Hook 去监视鼠标和键盘输入,以及其他发送到消息

    队列中的消息。

    (6)WH_JOURNALPLAYBACK Hook

    WH_JOURNALPLAYBACK Hook 使应用程序可以chā入消息到系统消息队列。可以使用

    该Hook 回放用WH_JOURNALRECORD Hook 记录下来的连续的鼠标和键盘事件。只要

    WH_
上一页 目录 下一页