全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2324
推到 Plurk!
推到 Facebook!

應用程式敏感鍵的(hotkey)的技術來實現實現

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-26 12:44:49 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 應用程式敏感鍵的實現 ----在一個應用程式內部功能表、部件都可以設置敏感鍵。如在功能表中一般用alt f進 入“文件”之類的子功能表。另外我們在桌面上設置的快捷方式裏的快捷鍵,無論你任何 時候按下你所設置的快捷鍵就會?動相應的應用程式。在多個正在運行的應用程式中如 何利用一個按鍵動作迅速地回到你所需要的應用程式呢?這就需要利用敏感鍵 (hotkey)的技術來實現。本文利用delphi3.0開發工具來闡述該技術在應用程式的實 現方法。 一、敏感鍵的設置 ----在windowsapi中有一個函數registerhotkey用於設置敏感鍵,它的調用方式如下: boolregisterhotkey( hwndhwnd,回應該敏感鍵的窗口控制碼 intid,該敏感鍵的唯一標示符 uintfsmodifiers,該敏感鍵的輔助按鍵 uintvk該敏感鍵的鍵值 ); ----其中敏感鍵的唯一標示符在window中規定應用程式的取值範圍?0x0000到0xbfff之 間,動態連結程式庫的取值範圍?0xc000到0xffff之間。?了保證其唯一性建議使用 globaladdatom函數來設置敏感鍵的唯一標示符。需要注意的是globaladdatom還回的值 是在0xc000到0xffff範圍之間,?滿足registerhotkey的調用要求,如果是在應用程式 中設置敏感鍵可以利用globaladdatom還回值減去0xc000。 ----敏感鍵的輔助按鍵包括mod_ctrl、mod_alt、mod_shift,對於windows相容鍵盤還 支援windows鍵,即其鍵面上有windows標誌的那個鍵,其值?mod_win。 ----在delphi中建立一個“newapplication”,在tform1中的private段中加入如下 代碼 private {privatedeclarations} hotkeyid:integer; procedurewmhotkeyhandle(varmsg:tmessage); messagewm_hotkey;回應敏感鍵按鍵消息 在formcreate事件中加入如下代碼 … hotkeyid:=globaladdatom(pchar (“userdefinehotkey”))-$c000; 減去$c000是?了保證取值範圍的限制 registerhotkey(handle,hotkeyid, mod_controlormod_altt,$41); 敏感鍵?ctrl alt a … 二、敏感鍵的回應 ----一旦敏感鍵設置成功,在程式應用過程中如果有相應敏感鍵被按下,windows系統都會給 你的應用程式發送一個消息wm_hotkey,不管你的應用程式是否?當前活動的。其中wm_hotkey 消息的格式?: idhotkey=(int)wparam; 該參數在設置系統級的敏感鍵有用,一般不予使用 fumodifiers=(uint)loword(lparam); 敏感鍵的輔助按鍵 uvirtkey=(uint)hiword(lparam); 敏感鍵的鍵值 ----因?windows系統只是把一個wm_hotkey的消息發送給應用程式,要完成具體的事情需要一 個消息處理程式,也就是上面private段裏的 procedurewmhotkeyhandle(varmsg:tmessage);messagewm_hotkey;過程,它的代碼 如下(這裏只是簡單地把視窗最前面顯示) proceduretform1.wmhotkeyhandle (varmsg:tmessage); begin if(msg.lparamhi=$41)and (msg.lparamlo=mod_controlormod_alt)then begin msg.result:=1;該消息已經處理 application.bringtofront; 把視窗最前面顯示 end; end; 三、敏感鍵的釋放 ----在應用程式退出來之前應當把你所設置的敏感鍵釋放掉,以釋放其所佔有的系統資源,這裏 需要調用兩個windowsapi函數unregisterhotkey,它的調用格式如下: boolunregisterhotkey( hwndhwnd,與敏感鍵關聯的窗口控制碼 intid敏感鍵的標示符 ); 也就是說只要在formclose事件中加入如下代碼 … unregisterhotkey(handle,hotkeyid); deleteatom(hotkeyid); … ----到這裏?止,你應當對敏感鍵技術有了全面的瞭解,以上的例子相當簡單同時也沒有提供必 要的調用成功檢測,可以根據具體情況加以完善,希望對你的開發過程會有所幫助.
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-04-18 17:51:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!