C++ 獲取窗口句柄,給窗口設置全局熱鍵


最近沒事學習了下C++,用MFC做了一個小程序:點擊應用程序窗口獲取程序句柄,給應用程序設置全局熱鍵,隱藏程序。

思路:
  1. 截獲鼠標點擊事件。
  2. 獲取點擊的窗口句柄。
  3. 設置全局熱鍵。
  4. 響應熱鍵的事件。

實現:
  1. 截獲鼠標點擊事件。
    使用SetCapture()將所有的鼠標消息據為己有。在捕獲過程中,你卻無法對其他的鼠標消息做出反應。ReleaseCapture()可以釋放捕獲的鼠標消息。
  還有其他的捕獲鼠標的方法,可以參看:http://blog.sina.com.cn/s/blog_5c52ae1b0100bj0t.html

 

  2. 獲取點擊的窗口句柄。
    先通過BOOL GetCursorPos(LPPOINT lpPoint)獲取鼠標點擊在屏幕上的坐標,再使用win32 api函數:HWND WindowFromPoint(POINT& Point),得到當前窗口的句柄。


  3. 設置全局熱鍵。    

// 獲取當前窗口句柄 
HWND handle = GetSafeHwnd(); 
//得到熱鍵的唯一標識
int HotKeyId = GlobalAddAtom('MyHotKey'); 
//注冊全局熱鍵Alt + F8
RegisterHotKey(handle,HotKeyId,MOD_ALT, VK_F8);

  注銷熱鍵的方法:  

UnRegisterHotKey(handle, HotKeyId); //注銷HotKey, 釋放資源。

  

  4. 響應熱鍵的事件。

    我重寫了窗體的PreTranslateMessage事件,已達到響應熱鍵消息的目的。

BOOL CHideAppDlg::PreTranslateMessage(MSG* pMsg) 
{
    switch (pMsg->message)
    {
        case WM_HOTKEY:
        int HotKeyId= pMsg->wParam;    
break; } return CDialog::PreTranslateMessage(pMsg); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM