必威体育Betway必威体育官网
当前位置:首页 > IT技术

Delphi RegisterHotKey 设置系统热键

时间:2019-08-20 12:40:00来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

registerhotkey

首先先贴一张热键表

symbolic

constant name

Value

(hexadecimal)

Keyboard (or mouse) equivalent
VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_pause 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
VK_ESCAPE 1B ESC key
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
VK_print 2A PRINT key
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C print screen key
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
  30 0 key
  31 1 key
  32 2 key
  33 3 key
  34 4 key
  35 5 key
  36 6 key
  37 7 key
  38 8 key
  39 9 key
  41 A key
  42 B key
  43 C key
  44 D key
  45 E key
  46 F key
  47 G key
  48 H key
  49 I key
  4A J key
  4B K key
  4C L key
  4D M key
  4E N key
  4F O key
  50 P key
  51 Q key
  52 R key
  53 S key
  54 T key
  55 U key
  56 V key
  57 W key
  58 X key
  59 Y key
  5A Z key
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
VK_NUMLOCK 90 NUM LOCK key
VK_scroll 91 SCROLL LOCK key
VK_LSHIFT A0 Left SHIFT key
VK_RSHIFT A1 Right SHIFT key
VK_LCONTROL A2 Left CONTROL key
VK_RCONTROL A3 Right CONTROL key
VK_LMENU A4 Left MENU key
VK_RMENU A5 Right MENU key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key

//定义全局变量

var 

QuitId, ShowMe: integer;

//热键响应函数

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

//注册热键

QuitId := GlobalAddAtom('MyQuitId') - $C000;

RegisterHotKey(handle, QuitId, MOD_CONTROL, VK_F2);

//注册热键

ShowMe := GlobalAddAtom('MyShowMe') - $C000;

RegisterHotKey(Handle, ShowMe, MOD_CONTROL, VK_F1);

注:HotKeyId的合法取之范围是0x0000到0xBFFF之间,GlobalAddAtom函数得到的值在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。

热键的辅助按键包括Mod_Ctrl、Mod_Alt、Mod_Shift,对于windows兼容键盘还支持Windows键,即其键面上有Windows标志的那个键,其值为Mod_win。

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

这个函数你应该能句举一反三了吧。

原理:

一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消息的格式为:

idHotKey=(int)wParam;//该参数在设置系统级的热键有用,一般不予使用

fuModifiers=(UINT)LOword(lParam);//热键的辅助按键

uVirtKey=(UINT)HIWORD(lParam);//热键的键值

//释放热键

UnRegisterHotKey(handle, QuitId);

UnRegisterHotKey(handle, ShowMe);

procedure TfrmMain.HotKeyDown(var Msg: Tmessage);

begin

if (Msg.LparamLo = MOD_CONTROL) AND (Msg.LParamHi = VK_F2) then //退出

begin

Close;

end;

if (Msg.LparamLo = MOD_CONTROL) AND (Msg.LParamHi = VK_F1) then

begin

Close;

end;

end;

相关阅读

在Delphi中FormatDateTime函数的用法

在Delphi中FormatDateTime函数的用法 function FormatDateTime(const Format: string; DateTime: TDateTime): string; Format

Delphi 中递归生成TreeView节点的方法

在数据库中建一张表,包含:NodeName,NodeId,ParentId 3个字段,具体什么含义,一看就知了。过程如下:procedure TFRM_channel.formtreenod

Delphi2010

两天前拿到了Delphi2010的内测版光盘,然后装上了试用,经过将近两天的试用,感觉相当的棒下面是体验报告,希望起到抛砖引玉的作用。首先

delphi “Invalid floating point operation.”错误的

这两天用webbrower写东西,有时候打开SSL加密站点时会出现”Invalid floating point operation.”的错误,上网搜了下,把解决方法贴上

Delphi中GetTickCount函数的使用

【函数名】 GetTickCount【库名】 kernel32【说明】 用于获取自windows启动以来经历的时间长度(毫秒)【返回值】 Long,以毫秒为单位

分享到:

栏目导航

推荐阅读

热门阅读