程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 應用程序敏感鍵的實現

應用程序敏感鍵的實現

編輯:Delphi
在一個應用程序內部菜單、部件都可以設置敏感鍵。如在菜單中一般用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);
  …
  ----到這裡為止,你應當對敏感鍵技術有了全面的了解,以上的例子相當簡單同時也沒有提供必
  要的調用成功檢測,可以根據具體情況加以完善,希望對你的開發過程會有所幫助.
  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved