用DELPHI如何註冊系統熱鍵
阿新 • • 發佈:2019-02-11
Shift 016 Ctrl 017
Alt 018 Pause 019
Caps Lock 020 Esc 027
空格鍵 032 Page Up 033
Page Down 034 End 035
Home 036 方向左 037
方向上 038 方向右 039
方向下 040 Insert 045
Delete 046 0 - 9 048 - 57
A - Z 065 - 090 數字鍵盤0-9 096 - 105
數字鍵盤* 106 數字鍵盤+ 107
數字鍵盤- 109 數字鍵盤. 110
數字鍵盤/ 111 F1 - F12 112 - 123
Num Lock 144 Soroll Lock 145
; 186 = 187
, 188 - 189
. 190 / 191
~ 192 [ 219
/ 220 ] 221
' 222
上面 的程式碼註冊了一個熱鍵: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;
然後在程式中加入如下程式碼:
procedure Tfmain.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_ALT) AND Msg.LParamHi = VK_F8 then // 假設熱鍵為ALT+F8
begin
end;
end;
最後一步:
在視窗的close事件中加入
UnRegisterHotKey(handle, HotKeyId); //登出HotKey, 釋放資源。
Alt 018 Pause 019
Caps Lock 020 Esc 027
空格鍵 032 Page Up 033
Page Down 034 End 035
Home 036 方向左 037
方向上 038 方向右 039
方向下 040 Insert 045
Delete 046 0 - 9 048 - 57
A - Z 065 - 090 數字鍵盤0-9 096 - 105
數字鍵盤* 106 數字鍵盤+ 107
數字鍵盤- 109 數字鍵盤. 110
數字鍵盤/ 111 F1 - F12 112 - 123
Num Lock 144 Soroll Lock 145
; 186 = 187
, 188 - 189
. 190 / 191
~ 192 [ 219
/ 220 ] 221
' 222
上面 的程式碼註冊了一個熱鍵: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;
然後在程式中加入如下程式碼:
procedure Tfmain.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_ALT) AND Msg.LParamHi = VK_F8 then // 假設熱鍵為ALT+F8
begin
end;
end;
最後一步:
在視窗的close事件中加入
UnRegisterHotKey(handle, HotKeyId); //登出HotKey, 釋放資源。