MFC 钩子简介

在MFC程序中,钩子是一个强大的武器,要小心使用全局钩子,一般使用线程钩子,关键步骤如下:

下面所有代码都在cpp文件中添加:

1、 声明全局钩子变量,全局钩子函数:  
   HHOOK g_hMyHhook = NULL;
   LRESULT CALLBACK MyMouseProc( int nCode,WPARAM wParam,LPARAM lParam);

2、定义全局钩子函数:

   LRESULT CALLBACK MyMouseProc( int nCode,WPARAM wParam,LPARAM lParam)
   {
       if (wParam == WM_LBUTTONDOWN) //举例,截获鼠标左键单击消息
       {
       }
       return CallNextHookEx(g_hMyHhook,nCode,wParam,lParam);//传递消息
   }

3、初始化函数中加载钩子

   if(g_hMyHhook == NULL)
   {

      g_hMyHhook = SetWindowsHookEx(WH_MOUSE, MyMouseProc, NULL, GetCurrentThreadId());

4、程序退出卸载钩子

   if(g_hMyHhook)
   {
       UnhookWindowsHookEx(g_hMyHhook);
       g_hMyHhook = NULL;
   }
  

posted @ 2010-03-05 17:43  stuarts  Views(2260)  Comments(1Edit  收藏  举报