国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

應用程序敏感鍵的實現

2019-11-18 19:01:00
字體:
來源:轉載
供稿:網友
----在一個應用程序內部菜單、部件都可以設置敏感鍵。如在菜單中一般用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);

----到這里為止,你應當對敏感鍵技術有了全面的了解,以上的例子相當簡單同時也沒有提供必
要的調用成功檢測,可以根據具體情況加以完善,希望對你的開發過程會有所幫助.

上一篇:如何移動沒有標題的窗體

下一篇:asp.net 2.0下嵌套masterpage頁的可視化編輯

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 泰兴市| 墨竹工卡县| 磴口县| 土默特右旗| 武川县| 中江县| 垣曲县| 陆河县| 延安市| 霍州市| 高邑县| 南投市| 辽中县| 建平县| 札达县| 德保县| 北票市| 民勤县| 江孜县| 澄迈县| 门源| 砀山县| 娱乐| 固始县| 克什克腾旗| 遂溪县| 巨鹿县| 阿城市| 安宁市| 安康市| 汽车| 花垣县| 浦县| 尉犁县| 皋兰县| 姚安县| 东海县| 油尖旺区| 乡城县| 北辰区| 宣威市|