Hook基础

来源:互联网 发布:中经网统计数据库注册 编辑:程序博客网 时间:2024/06/06 01:53

一、Hook基础

Hook过程,又称作钩子过程。

        我们可以通过SetWindowsHookEx函数来安装一个钩子过程,如下所示:

HHOOK SetWindowsHookEx(          int idHook,    HOOKPROC lpfn,    HINSTANCE hMod,    DWORD dwThreadId);

idHook,指钩子的类型,可以是如下值之一:

  1. WH_CALLWNDPROC 
  2.  WH_CALLWNDPROCRET 
  3. WH_CBT 
  4. WH_DEBUG 
  5. WH_FOREGROUNDIDLE 
  6. WH_GETMESSAGE
  7. WH_JOURNALPLAYBACK
  8. WH_JOURNALRECORD
  9. WH_KEYBOARD_LL 
  10. WH_KEYBOARD 
  11. WH_MOUSE_LL 
  12. WH_MOUSE 
  13. WH_MSGFILTER 
  14.  WH_SYSMSGFILTER
  15. WH_SHELL 
lpfn,指向相应的钩子过程。

hMod,钩子过程所在的Dll的句柄。

dwThreadId,指定与钩子过程相关的线程标识。

二、进程内钩子(Hook)

HHOOK h_Mouse=NULL;  h_Mouse=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());   //定义鼠标钩子过程  LRESULT CALLBACK MouseProc(     int nCode,      // hook code     WPARAM wParam,  // message identifier     LPARAM lParam   // mouse coordinates     )  {  if (wParam == WM_MOUSEWHEEL){return 1;}else{return CallNextHookEx(h_Mouse,nCode,wParam,lParam);} }  //解除钩子 UnhookWindowsHookEx(h_Mouse); 

三、全局钩子(Hook)

全局钩子必须在DLL中去实现。

原创粉丝点击