C# 钩子整理


安装钩子

函数原型:

HHOOK  SetWindowsHookEx(

                                    int                     idHook,           //钩子类型

                                    HOOKPROC  lpfn,                 //回调函数地址

                                    INSTANCE      hMod,             //钩子所在实例句柄

                                    DWORD          dwThreadId  //钩子所监视的线程的线程号

                                    )


参数说明:

idHook: 钩子类型。分两种:全局钩子何局部钩子

              全局钩子可以抓取其他进程的消息,分为抓取其他进程中某一特定线程的消息和抓取所有进程的消息两种。

              局部钩子只抓取当前进程的消息。

               WH_CALLWNDPROC=4(发送到窗口的消息,由sendmessage触发)

lpfn:回调函数

         当抓取到消息时,操作系统将自动调用该函数处理消息。在C#中要使用委托。

hMod: 对于线程钩子,参数传NULL

            对于系统钩子,参数为钩子DLL的句柄

dwThreadId: 对于全局钩子,该参数为NULL


返回值:

成功: 返回SetWindowsHookEx返回所安装的钩子句柄

失败: NULL



回调函数           你要截获的消息就在这里进行。注意,回调函数应当短小精悍,不能占用太多时间,最好只用来捕获和传递消息,对消息处理应该放在其他地方

函数原型

LRESULT  WINAPI  MyHookProc(

                    int                   nCode,           //指定是否需要处理该消息

                    WPARAM       wParam,       //包含该消息的附加消息

                    LPARAM        lParam          //包含该消息的附加消息

                                                           )


调用下一个钩子

LRESULT CallNextHookEx(

                 HHOOK               hhk,                //是您自己的钩子函数的句柄。用该句柄可以遍历钩子链

                 int                         nCode,           //把传入的参数简单传给CallNextHookEx即可

                 WPARAM             wParam,        //把传入的参数简单传给CallNextHookEx即可

                 LPARAM              lParam           //把传入的参数简单传给CallNextHookEx即可

                                               );


卸载钩子  用完后卸载 不然系统会慢

函数原型

BOOL  UnhookWindowsHookEx(

                                 HHOOK                     hhk        //要卸载的钩子句柄

                                                          )



                






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值