C++钩子函数描述

钩子 

HHOOK SetWindowsHookEx(                                    //装载一个钩子         
    int idHook,                                            //描述被装载的钩子的类型,参数见下面
    HOOKPROC lpfn,                               //钩子回调函数的地址,如果 dwThreadId 为 0 那么这个回调函数会在不同的进程中创建,它必须写在在DLL中
    HINSTANCE hMod,                                        //DLL的句柄
    DWORD dwThreadId                                    //描述要钩住的线程ID,如果这个参数为0,则会钩住桌面上的所有线程
);                                                         //如果函数调用成功,返回值是成功开启的钩子句柄,如果失败,返回值为 0
/*
    idHook 相关的参数:
            WH_CALLWNDPROC                :安装一个钩子,监视系统发送给窗口的消息,更多信息如下:
LRESULT CALLBACK CallWndProc(         
                            int nCode,                       //描述钩子程序是否一定要处理这个消息 如果 nCode == HC_ACTION,那么钩子程序一定要处理这个消息,如果 nCode 的值小于零,则一定要跳过这个消息
                            WPARAM wParam,      //描述这个消息是否来自于当前的线程,如果这个消息是来自于当前的线程那么该值为非零,否则该值为零
                            LPARAM lParam           //一个指向 CWPSTRUCT 结构体的指针,更多相关信息如下:
                        );
                                    typedef struct {
                                        LPARAM lParam;                   //消息的扩展信息
                                        WPARAM wParam;                //消息的扩展信息
                                        UINT message;                        //消息
                                        HWND hwnd;                         //接受消息的窗口
                                    } CWPSTRUCT, *PCWPSTRUCT;

            WH_CALLWNDPROCRET            :安装一个钩子,监视系统发送已经处理后给窗口的消息,更多信息如下:
                    LRESULT CALLBACK CallWndRetProc(          
                            int nCode,                      //描述钩子程序是否一定要处理这个消息 如果 nCode == HC_ACTION,那么钩子程序一定要处理这个消息,如果 nCode 的值小于零,则一定要跳过这个消息
                            WPARAM wParam,     //描述这个消息是否来自于当前的线程,如果这个消息是来自于当前的线程那么该值为非零,否则该值为零
                            LPARAM lParam         //一个指向 CWPSTRUCT 结构体的指针,更多相关信息如上:
                        );

            WH_CBT                        :安装一个钩子,临视系统发送给窗口的基本信息(基于计算机培训的"钩子"),更多信息如下:
                    LRESULT CALLBACK CBTProc(         
                        int nCode,                        //描述钩子程序装如何处理消息,如果 nCode 的值小于零 那么钩子程序将跳过这个消息.返回调用 CallNextHookEx 得到的返回值,相关值的意义如下
                        WPARAM wParam,        //相关信息参见返回值
                        LPARAM lParam            //相关信息参见返回值
                    );                                    //返回值为参数一相关的值
                                    //        nCode    的相关值
                                        HCBT_ACTIVATE            :系统正要激活一个窗口
                                        HCBT_CLICKSKIPPED        :系统已经从消息队列中删除了鼠标滚回消息,必须在安装了 WH_JOURNALPLAYBACK 钩子之后才会触发该消息
                                        HCBT_CREATEWND            :一个窗口已经被创建,系统会在发送 WM_CREATE 或 WM_NCCREATE 消息之前调用钩子程序.如果钩子程序
                                                                 的返回值为非零,那么系统装会销毁这个窗口, CreateWindow 函数的返回值会为 NULL,但是 WM_DESTROY
                                                                 消息不会发送给窗口,如果钩子程序的返回值为零,那么窗口会被正常创建,在 HCBT_CREATEWND 被通知
                                                                 的时候,这个窗口就已经被创建了,但是它的大小和位置被有被指定,以及它的父窗口也没有被指定.
                                        HCBT_DESTROYWND            :一个窗口已经被销毁
                                        HCBT_KEYSKIPPED            :系统已经从消息队列中删除了键盘滚回消息,必须在安装了 WH_JOURNALPLAYBACK 钩子之后才会触发该消息
                                        HCBT_MINMAX                :一个窗口已经最小化或最大化了
                                        HCBT_MOVESIZE            :一个窗口已经移动了或改变了大小
                                        HCBT_QS                    :一个窗口已经从系统消息队列中接受了  WM_QUEUESYNC  消息.
                                        HCBT_SETFOCUS            :一个窗口已经被激活
                                        HCBT_SYSCOMMAND            :一个窗口已经接受了系统命令

            WH_DEBUG                    :安装一个钩子,钩住安装钩子的程序(差错"钩子"),更多信息如下:
                    LRESULT CALLBACK DebugProc(          
                        int nCode,                        //描述钩子程序是否一定要处理这个消息 如果 nCode == HC_ACTION,那么钩子程序一定要处理这个消息,如果 nCode 的值小于零,则一定要跳过这个消息
                        WPARAM wParam,                    //描述什么样的钩子被装载了,参数值与 SetWindowsHookEx 函数的 idHook 参数值相同
                        LPARAM lParam                    //一个指向  DEBUGHOOKINFO 结构体的指什,具体信息如下:
                    );
                            typedef struct {
                                DWORD idThread;                                //filter 线程的ID
                                DWORD idThreadInstaller;                    //debugging filter 线程的ID
                                LPARAM lParam;                                //描述跳过此钩子程序要传递给Debug程序的 lParam
                                WPARAM wParam;                                //描述跳过此钩子程序要传递给Debug程序的 wParam
                                int code;                                    //描述跳过此钩子程序要传遵给Debug程序的 nCode
                            } DEBUGHOOKINFO, *PDEBUGHOOKINFO;

            WH_FOREGROUNDIDLE            :安装一个钩子,当一个程序的前端线程改变为低优先级时调用钩子程序,这个钩子在一个任务被降低优先级前工作(前台空闲窗口"钩子"),更多信息如下:
                    DWORD CALLBACK ForegroundIdleProc(
                        int code,                        //描述钩子程序是否一定要处理这个消息 如果 nCode == HC_ACTION,那么钩子程序一定要处理这个消息,如果 nCode 的值小于零,则一定要跳过这个消息
                        DWORD wParam,       //这个参数没有用
             

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值