当前位置: 首页 > 技术文档, 资源共享 > 正文
avatar

在窗口的create事件中,加入以下代码 : 注: HotKeyId的合法取之范围是0x0000到0xBFFF […]

20110825172951-1730286799
在窗口的create事件中,加入以下代码 :

HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
RegisterHotKey(Handle,hotkeyid,MOD_CONTROL,VK_F6);

注: HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值
在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。
热键的辅助按键包括Mod_Ctrl 、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows
键,即其键面上有Windows标志的那个键,其值为Mod_win。

部分热键:
MOD_ALT Alt 键
MOD_CONTROL Ctrl 键
MOD_SHIFT Shift 键
Back 008 Enter 013
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

上面 的代码注册了一个热键:Ctrl+F6。当然如果非组合按键,只用F6, 就这么写:

RegisterHotKey(Handle,hotkeyid,0,VK_F6);

注:handle是一个特殊的变量,它表示当前窗口的句柄。

注册了热键,就该写下响应代码了。
首先,在程序头部分的private段中加入声明 (作用是声明这个过程,和声明变量类似。
关于如何声明函数、过程,请请参考各自的帮助文件或其它资料):

  procedure HotKeyDown(var Msg:Tmessage);
  message WM_HOTKEY;

然后在程序中加入如下代码:

procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
  if (Msg.LparamLo = MOD_CONTROL) and (Msg.LParamHi=VK_F6) then // 假设热键为ctrl+F6
  begin
    //这里写要执行的
  end;

end;

在窗口的close事件中加入 :

UnRegisterHotKey(handle,HotKeyId);
本文固定链接: https://blog.yanhualou.com/jishu/479.html | 烟花楼博客
标签:

delphi 注册系统热键:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter