键盘记录:vkCode与KeyEvent

 今天在做鼠标及键盘的记录与回放时,碰到通过Hook记录下来的键盘的vkCodeKeyEvent中对应的键码部分不相同。

这些不同之处主要体现在符号键(如:“,”“。”等)和控制键(如:“Shift”、“Ctrl”、“Enter”)等上面。

 

经逐一测试,记录下两者的对应关系(红色为不同,蓝色为相同):

VkCode

KeyEvent事件

键码

Esc

27

VK_ESCAPE

27

F1

112

VK_F1

112

F2

113

VK_F2

113

F3

114

VK_F3

114

F4

115

VK_F4

115

F5

116

VK_F5

116

F6

117

VK_F6

117

F7

118

VK_F7

118

F8

119

VK_F8

119

F9

120

VK_F9

120

F10

121

VK_F10

121

F11

122

VK_F11

122

F12

123

VK_F12

123

0

48

VK_0

48

1

49

VK_1

49

2

50

VK_2

50

3

51

VK_3

51

4

52

VK_4

52

5

53

VK_5

53

6

54

VK_6

54

7

55

VK_7

55

8

56

VK_8

56

9

57

VK_9

57

A

65

VK_A

65

B

66

VK_B

66

C

67

VK_C

67

D

68

VK_D

68

E

69

VK_E

69

F

70

VK_F

70

G

71

VK_G

71

H

72

VK_H

72

I

73

VK_I

73

J

74

VK_J

74

K

75

VK_K

75

L

76

VK_L

76

M

77

VK_M

77

N

78

VK_N

78

O

79

VK_O

79

P

80

VK_P

80

Q

81

VK_Q

81

R

82

VK_R

82

S

83

VK_S

83

T

84

VK_T

84

U

85

VK_U

85

V

86

VK_V

86

W

87

VK_W

87

X

88

VK_X

88

Y

89

VK_Y

89

Z

90

VK_Z

90

NumLock

144

VK_NUM_LOCK

144

数字小键盘0

96

VK_NUMPAD0

96

数字小键盘1

97

VK_NUMPAD1

97

数字小键盘2

98

VK_NUMPAD2

98

数字小键盘3

99

VK_NUMPAD3

99

数字小键盘4

100

VK_NUMPAD4

100

数字小键盘5

101

VK_NUMPAD5

101

数字小键盘6

102

VK_NUMPAD6

102

数字小键盘7

103

VK_NUMPAD7

103

数字小键盘8

104

VK_NUMPAD8

104

数字小键盘9

105

VK_NUMPAD9

105

数字小键盘+

107

VK_ADD

107

数字小键盘-

109

VK_SUBTRACT

109

数字小键盘*

106

VK_MULTIPLY

106

数字小键盘/

111

VK_DIVIDE

111

数字小键盘.

110

VK_DECIMAL

110

数字小键盘Enter

13

VK_ENTER

10

Insert

45

VK_INSERT

155

Delete

46

VK_DELETE

127

PageUp

33

VK_PAGE_UP

33

PageDown

34

VK_PAGE_DOWN

34

End

35

VK_END

35

Home

36

VK_HOME

36

左边方向键←

37

VK_LEFT

37

上方向键↑

38

VK_UP

38

右方向键→

39

VK_RIGHT

39

下方向键↓

40

VK_DOWN

40

Tab

9

VK_TAB

9

Caps Lock

20

VK_CAPS_LOCK

20

Shift(Left)

160

VK_SHIFT

16

Shift(Right)

161

VK_SHIFT

16

Ctrl(Left)

162

VK_CONTROL

17

Ctrl(Right)

163

VK_CONTROL

17

Win(Left)

91

VK_WINDOWS

524

Win(Right)

92

VK_WINDOWS

524

Alt(Left)

164

VK_ALT

18

Alt(Right)

165

VK_ALT

18

-

189

VK_MINUS

45

=

187

VK_EQUALS

61

Backspace

8

VK_BACK_SPACE

8

[

219

VK_OPEN_BRACKET

91

]

221

VK_CLOSE_BRACKET

93

\

220

VK_BACK_SLASH

92

;

186

VK_SEMICOLON

59

222

VK_QUOTE

222

,

188

VK_COMMA

44

.

190

VK_PERIOD

46

/

191

VK_SLASH

47

Enter

13

VK_ENTER

10

 

  • 10
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在EasyX图形库中,可以使用以下函数来获取键盘操作: 1. GetAsyncKeyState(int vkey) 该函数用于获取指定虚拟键码对应的键盘状态,返回值为一个short类型的值,如果返回值的最高位为1,则表示对应的键被按下,否则表示对应的键没有被按下。vkey参数是虚拟键码,可以使用VK_XXX常量来指定。 2. GetKeyNameText(DWORD lParam, LPTSTR lpString, int nSize) 该函数用于将键盘消息的lParam参数转换为对应的键名字符串。lParam参数是一个32位值,表示键盘消息的详细信息,lpString参数是指向一个缓冲区的指针,用于存储转换后的键名字符串,nSize参数是缓冲区的大小。 3. keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo) 该函数用于模拟键盘操作,可以发送键按下和键松开的消息。bVk参数是虚拟键码,bScan参数是扫描码(一般可以设置为0),dwFlags参数是操作标志,可以指定按下键、松开键或者同时按下和松开键,dwExtraInfo参数是附加信息,一般可以设置为0。 在使用这些函数时,需要注意以下几点: 1. 在调用GetAsyncKeyState函数时,需要使用位运算符&获取键盘状态的具体值,如: ``` if ((GetAsyncKeyState(VK_UP) & 0x8000) != 0) { // UP键被按下 } ``` 2. 在使用GetKeyNameText函数时,需要先将键盘消息的lParam参数转换为虚拟键码,然后再调用GetKeyNameText函数,如: ``` DWORD vkCode = ((KBDLLHOOKSTRUCT*)lParam)->vkCode; TCHAR keyName[64]; GetKeyNameText(vkCode << 16, keyName, 64); ``` 3. 在使用keybd_event函数时,需要发送按下和松开两个键盘消息,如: ``` keybd_event(VK_LEFT, 0, 0, 0); keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值