RegisterHotKey注冊快捷鍵


RegisterHotKey的具體使用方使用方法如下: 


BOOL   RegisterHotKey( 
HWND   hWnd,         //響應該熱鍵的窗口句柄 
Int   id,                       //該熱鍵的唯一標識 
UINT   fsModifiers,   //該熱鍵的輔助按鍵 
UINT   vk                 //該熱鍵的鍵值 
);   

為了得到唯一標識,我們還將用到另一個API函數   
ATOM   GlobalAddAtom( 
LPCTSTR   lpString   //自己設定的一個字符串 
); 

 

例如:

注冊熱鍵

m_HKId = ::GlobalAddAtom(_T("MyHotKey")) - 0xC000;
BOOL bl = ::RegisterHotKey(GetHWND(), m_HKId, MOD_SHIFT, VK_F1);



因為我們還要在程序退出的時候,消除這個熱鍵,   所以需要聲明一個全局變量:   
HotKeyId:   Integer;   
    

第一步:   

在窗口的create事件中,加入以下代碼   

HotKeyId   :=   GlobalAddAtom(‘MyHotKey’)   -   $C000; 
注:   HotKeyId的合法取之范圍是0x0000到0xBFFF之間,   GlobalAddAtom函數得到的值 
在0xC000到0xFFFF之間,所以減掉0xC000來滿足調用要求。 

第二步:   

在上面的代碼下面加入:   

RegisterHotKey(Handle,   hotkeyid,   MOD_ALT,   VK_F8);     

熱鍵的輔助按鍵包括Mod_Ctrl   、Mod_Alt、Mod_Shift,對於Windows兼容鍵盤還支持Windows 
鍵,即其鍵面上有Windows標志的那個鍵,其值為Mod_win。 

上面   的代碼注冊了一個熱鍵:ALT+F8。當然如果你希望象TAKEIT那樣,只用F8,   就這么寫: 

RegisterHotKey(Handle,   hotkeyid,   0,   VK_F8);     

注:handle是一個特殊的變量,它表示當前窗口的句柄。 

這個函數你應該能句舉一反三了吧。 

原理: 

一旦熱鍵設置成功,在程序應用過程中如果有相應的鍵被按下,Windows系統都會給你的應 
用程序發送一個消息WM_HOTKEY,不管你的應用程序是否為當前活動的。其中WM_HOTKEY消 
息的格式為:     

idHotKey   =   (int)   wParam;   //   該參數在設置系統級的熱鍵有用,一般不予使用 
fuModifiers   =   (UINT)   LOWORD(lParam);     //熱鍵的輔助按鍵 
uVirtKey   =   (UINT)   HIWORD(lParam);   //熱鍵的鍵值   

    

第三步:   

注冊了熱鍵,就該寫下響應代碼了。   

首先,在程序頭部分的private段中加入聲明   (作用是聲明這個過程,和聲明變量類似。 
關於如何聲明函數、過程,請請參考各自的幫助文件或其它資料):   

procedure   HotKeyDown(var   Msg:   Tmessage);   message   WM_HOTKEY;   

然后在程序中加入如下代碼:   

消息處理函數中判斷消息是否為 WM_HOTKEY消息

case WM_HOTKEY:

{

//熱鍵要處理的操縱
}

break;


最后一步:   
在窗口的close事件中加入   

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


免責聲明!

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



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