Delphi 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的合法取之范围是0x00000xBFFF之间,GlobalAddAtom函数得到的值在0xC0000xFFFF之间,所以减掉0xC000来满足调用要求。

  热键的辅助按键包括Mod_CtrlMod_AltMod_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;

原文地址:https://www.cnblogs.com/blogpro/p/11452635.html