用到3个API函数
为了得到唯一标识,我们还将用到另一个API函数
ATOM GlobalAddAtom(
LPCTSTR lpString //自己设定的一个字符串
);
因为我们还要在程序退出的时候,消除这个热键, 所以需要声明一个全局变量:
HotKeyId: Integer;
第一步:
在窗口的create事件中,加入以下代码
第二步:
在上面的代码下面加入:
RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8);
上面 的代码注册了一个热键:ALT+F8。当然如果你希望象TAKEIT那样,只用F8, 就这么写:
RegisterHotKey(Handle, hotkeyid, 0, VK_F8);
注:handle是一个特殊的变量,它表示当前窗口的句柄。
这个函数你应该能句举一反三了吧。
原理:
第三步:
注册了热键,就该写下响应代码了。
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事件中加入
一个实际的例子!
TForm1
=
class
(TForm)
procedure
FormCreate(Sender: TObject);
procedure
FormDestroy(Sender: TObject);
protected
procedure
hotykey(
var
msg:TMessage);
message
WM_HOTKEY;
end
;
var
Form1: TForm1;
id,id2:Integer;
implementation
{
$R *.DFM
}
procedure
TForm1.hotykey(
var
msg:TMessage);
begin
if
(msg.LParamLo
=
MOD_CONTROL)
and
(msg.LParamHi
=
81
)
then
begin
ShowMessage(
‘
Ctrl + Q
‘
);
end
;
if
(msg.LParamLo
=
MOD_CONTROL)
and
(msg.LParamHi
=
82
)
then
begin
ShowMessage(
‘
Ctrl + R
‘
);
end
;
end
;
procedure
TForm1.FormCreate(Sender: TObject);
begin
id:
=
GlobalAddAtom(
‘
hotkey
‘
);
ReGISterHotKey(handle,id,
mod
_control,
81
);
id2:
=
GlobalAddAtom(
‘
hotkey2
‘
);
RegisterHotKey(handle,id2,
mod
_control,
82
);
end
;
procedure
TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,id);
UnRegisterHotKey(handle,id2);
end
;
附虚键码:
代码
VK_LBUTTON
Left
mouse button
VK_RBUTTON
Right
mouse button
VK_CANCEL Control
+
Break
VK_MBUTTON Middle mouse button
VK_BACK Backspace key
VK_TAB Tab key
VK_CLEAR Clear key
VK_RETURN Enter key
VK_SHIFT Shift key
VK_CONTROL Ctrl key
VK_MENU Alt key
VK_PAUSE Pause key
VK_CAPITAL Caps Lock key
VK_KANA Used
with
IME
VK_HANGUL Used
with
IME
VK_JUNJA Used
with
IME
VK_FINAL Used
with
IME
VK_HANJA Used
with
IME
VK_KANJI Used
with
IME
VK_CONVERT Used
with
IME
VK_NONCONVERT Used
with
IME
VK_ACCEPT Used
with
IME
VK_MODECHANGE Used
with
IME
VK_ESCAPE Esc key
VK_SPACE
Space
bar
VK_PRIOR Page Up key
VK_NEXT Page Down key
VK_END
End
key
VK_HOME Home key
VK_LEFT
Left
Arrow key
VK_UP Up Arrow key
VK_RIGHT
Right
Arrow key
VK_DOWN Down Arrow key
VK_SELECT
Select
key
VK_PRINT Print key (keyboard
–
specific)
VK_EXECUTE
Execute
key
VK_SNAPSHOT Print Screen key
VK_INSERT Insert key
VK_DELETE Delete key
VK_HELP Help key
VK_LWIN
Left
Windows key (Microsoft keyboard)
VK_RWIN
Right
Windows key (Microsoft keyboard)
VK_APPS Applications key (Microsoft keyboard)
VK_NUMPAD0
0
key (numeric keypad)
VK_NUMPAD1
1
key (numeric keypad)
VK_NUMPAD2
2
key (numeric keypad)
VK_NUMPAD3
3
key (numeric keypad)
VK_NUMPAD4
4
key (numeric keypad)
VK_NUMPAD5
5
key (numeric keypad)
VK_NUMPAD6
6
key (numeric keypad)
VK_NUMPAD7
7
key (numeric keypad)
VK_NUMPAD8
8
key (numeric keypad)
VK_NUMPAD9
9
key (numeric keypad)
VK_MULTIPLY Multiply key (numeric keypad)
VK_ADD Add key (numeric keypad)
VK_SEPARATOR Separator key (numeric keypad)
VK_SUBTRACT Subtract key (numeric keypad)
VK_DECIMAL Decimal key (numeric keypad)
VK_DIVIDE Divide key (numeric keypad)
VK_F1 F1 key
VK_F2 F2 key
VK_F3 F3 key
VK_F4 F4 key
VK_F5 F5 key
VK_F6 F6 key
VK_F7 F7 key
VK_F8 F8 key
VK_F9 F9 key
VK_F10 F10 key
VK_F11 F11 key
VK_F12 F12 key
VK_F13 F13 key
VK_F14 F14 key
VK_F15 F15 key
VK_F16 F16 key
VK_F17 F17 key
VK_F18 F18 key
VK_F19 F19 key
VK_F20 F20 key
VK_F21 F21 key
VK_F22 F22 key
VK_F23 F23 key
VK_F24 F24 key
VK_NUMLOCK Num Lock key
VK_SCROLL Scroll Lock key
VK_LSHIFT
Left
Shift key (only used
with
GetAsyncKeyState
and
GetKeyState)
VK_RSHIFT
Right
Shift key (only used
with
GetAsyncKeyState
and
GetKeyState)
VK_LCONTROL
Left
Ctrl key (only used
with
GetAsyncKeyState
and
GetKeyState)
VK_RCONTROL
Right
Ctrl key (only used
with
GetAsyncKeyState
and
GetKeyState)
VK_LMENU
Left
Alt key (only used
with
GetAsyncKeyState
and
GetKeyState)
VK_RMENU
Right
Alt key (only used
with
GetAsyncKeyState
and
GetKeyState)
VK_PROCESSKEY Process key
VK_ATTN Attn key
VK_CRSEL CrSel key
VK_EXSEL ExSel key
VK_EREOF
Erase
EOF key
VK_PLAY Play key
VK_ZOOM Zoom key
VK_NONAME Reserved
for
future use
VK_PA1 PA1 key
VK_OEM_CLEAR Clear key
转载于:https://www.cnblogs.com/rogee/archive/2010/09/17/1829573.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227892.html原文链接:https://javaforall.net
