使用SetWindowsHookEx監控全域滑鼠(雙擊右鍵)

來源:互聯網
上載者:User
 HHOOK SetWindowsHookEx(

  int idHook, // 鉤子的類型,即它處理的訊息類型

  HOOKPROC lpfn, // 鉤子子程的地址指標。如果dwThreadId參數為0

  // 或是一個由別的進程建立的線程的標識,

  // lpfn必須指向DLL中的鉤子子程。

  // 除此以外,lpfn可以指向當前進程的一段鉤子子程代碼。

  // 鉤子函數的入口地址,當鉤子鉤到任何訊息後便調用這個函數。

  HINSTANCE hMod, // 應用程式執行個體的控制代碼。標識包含lpfn所指的子程的

  DLL。

  // 如果dwThreadId 標識當前進程建立的一個線程,

  // 而且子程代碼位於當前進程,hMod必須為NULL。

  // 可以很簡單的設定其為本應用程式的執行個體控制代碼。

  DWORD dwThreadId // 與安裝的鉤子子程相關聯的線程的標識符。

  // 如果為0,鉤子子程與所有的線程關聯,即為全域鉤子。

  );

  函數成功則返回鉤子子程的控制代碼,失敗返回NULL

 

  1. HHOOK   glhHook=NULL;  //定義為全域變數
  2. DWORD  lastTime; //定義為全域變數
  3. BOOL lastIsRight=FALSE; //定義為全域變數
  4. HINSTANCE   glhInstance=NULL; 
  5. glhInstance=GetModuleHandle(NULL);
  6. glhHook=SetWindowsHookEx(WH_MOUSE_LL,MouseProc,glhInstance,0);
  7. //WH_MOUSE_LL指監控滑鼠行為,MouseProc是回呼函數
  8. LRESULT   CALLBACK    MouseProc(int   nCode,WPARAM   wparam,LPARAM   lparam)   
  9. {   
  10.     if (nCode>=0)
  11.     {   
  12.         if(wparam==WM_RBUTTONUP)
  13.         {
  14.             if(lastIsRight==FALSE)
  15.             {
  16.                 lastTime=::GetTickCount();
  17.                 lastIsRight=TRUE;
  18.             }
  19.             else
  20.             {
  21.                 DWORD  nowTime=::GetTickCount();
  22.                 if(nowTime-lastTime<350)//時間間隔為350ms
  23.                 {
  24.                     AfxMessageBox("雙擊了滑鼠右鍵");
  25.                 lastIsRight=FALSE;
  26.                 }
  27.                 else
  28.                     lastTime=nowTime;
  29.             
  30.             }
  31.                 
  32.         }
  33.     }
  34.     return   CallNextHookEx(glhHook,nCode,wparam,lparam);   
  35.   
  36. }

在網上看到的都是用wparam==WM_RBUTTONDBLCLK來判斷,但不知是不是我的做法有問題,監控不到,所有用時間間隔來判斷

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.