您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12805|回复: 0
打印 上一主题 下一主题

[C++学习资料] 模拟键盘API函数Keybd_event用法

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-27 00:31:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

模拟键盘API函数Keybd_event用法
& x  S) r0 {1 B% g- f& q+ ~; W

Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。

win32api.keybd_event

该函数原型如下:

  1. VOID keybd_event(  
    * b9 {+ h. }; o$ R) Y. n% ^
  2.   BYTE bVk, // virtual-key code  
    + D( G* }4 M( y6 L; Y
  3.   BYTE bScan, // hardware scan code  
    * L$ H4 i  n9 [6 A1 y8 Y( j7 g# D8 [
  4.   DWORD dwFlags, // flags specifying various function options  
    + I" a  F9 ?) q- S# G
  5.   DWORD dwExtraInfo // additional data associated with keystroke  1 I9 _3 p2 \, V: G
  6.   );  
复制代码
  从原型可以看出,Keybd_event()共有四个参数:! p  Z- n! n4 V+ b5 r

      第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表);

      第二个参数为扫描码,一般不用设置,用0代替就行;

      第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";

      第四个参数一般也是置0即可。


; d9 [% Y- ^& Q

例子1:模拟按下'A'键

  1. keybd_event(65,0,0,0);  
    ' c9 C  f1 T. {% y7 g
  2. keybd_event(65,0,KEYEVENTF_KEYUP,0);  
复制代码
例子2:模拟按下'ALT+F4'键
  1. keybd_event(18,0,0,0);  7 ^/ D* D8 M4 `' T! W% C% O- F9 Q
  2. keybd_event(115,0,0,0);  9 U: _7 Z6 H8 e
  3. keybd_event(115,0,KEYEVENTF_KEYUP,0);  4 Q1 G7 w) s- G0 j( ?
  4. keybd_event(18,0,KEYEVENTF_KEYUP,0);  
复制代码
附:常用模拟键的键值对照表(实际上字母的大小写键代码是不同的 )
  1.       字母和数字键 数字小键盘的键  
    . W5 r! @' D% j
  2. 功能键 其它键   4 q! m9 T8 D7 m1 o7 o0 ]
  3.       键   键码    键   键码    键   键码     键    键码   
    9 A( y/ F0 ^7 j8 b& |
  4.       A   65     0   96     F1   112   Backspace    8   % t% T! s7 R  A* {9 A  j# t2 R; f
  5.       B   66     1   97     F2   113   Tab       9   
    ' i) U! a. b" h9 n' c
  6.       C   67     2   98      F3   114    Clear      12   
    / i: w. B2 \+ t' u3 u7 F
  7.       D   68   3   99     F4   115  Enter      13   ' E2 j/ H& H# }$ x& ~
  8.       E   69     4   100    F5   116  Shift      16   
    ! z* I, h/ r3 G5 b/ J( z
  9.       F   70     5   101    F6   117  Control     17   
    ' |2 O0 V9 `2 \3 K( M
  10.       G   71     6   102    F7   118   Alt       18   
    , L% w- }. m( W$ X5 X- k! s
  11.       H   72    7   103    F8   119  Caps Lock    20   
    / z: U* k, T" x. ~
  12.       I   73    8   104    F9   120  Esc       27   
    , \. {8 F- h) L; ?# |
  13.       J   74    9   105    F10  121  Spacebar    32   
    " R; P2 z* J9 P3 ~; W5 [
  14.       K   75    *   106     F11  122  Page Up     33   : G7 a3 I; e% }& f; ?
  15.       L   76    +   107     F12  123  Page Down    34   
    4 H* o: x" T3 A  {
  16.       M   77    Enter 108    --   --   End       35   ) U2 [; I" T5 _. F+ @
  17.       N   78    -   109    --   --    Home      36     V8 W' L: v+ Q
  18.       O   79    .   110    --   --     Left Arrow   37   ( x' @# L; {# E2 q6 X- A4 h' D
  19.       P   80    /   111    --   --     Up Arrow    38   
    6 N9 a8 D0 b+ L6 C
  20.       Q   81    --   --     --   --     Right Arrow   39   ! h7 r; Y, ]! E1 U3 U# Z0 l
  21.       R   82    --   --    --   --      Down Arrow    40   
    $ @2 P' N2 T0 v* Q' s
  22.       S   83    --   --     --   --     Insert      45   8 |2 W3 K: w0 s% l
  23.       T   84    --   --     --   --     Delete      46   # \' r1 e, e/ A  g; F. N
  24.       U   85    --   --     --   --     Help       47   9 A6 A5 c3 x0 o1 W' W7 a& |
  25.       V   86    --   --    --   --     Num Lock     144   , I1 F" ?2 V* K7 y, a
  26.       W   87            
    ) G: v, @& x1 D
  27.       X   88        
    $ G8 I- o9 Z. y$ \
  28.       Y   89        
    & {9 D, O, d, A, {% t
  29.       Z   90        
    ; N5 F) J6 p, |
  30.       0   48        $ o1 ~0 |. w3 H* x- b
  31.       1   49        
    ; M/ L& l4 Q: S& g& ~5 G: s
  32.       2   50         ( a$ \0 }. S. i/ h. h
  33.       3   51           Q/ _! |( \& Z8 ?% f! z* c, ~
  34.       4   52         ; j6 X9 L0 c' l
  35.       5   53         
    1 ^  I: Q) F- K  f
  36.       6   54         
    + o. T0 `! s0 Q" v$ `
  37.       7   55         / U" Z8 H& Z1 t6 e2 t; m
  38.       8   56         9 F: Q0 O; q& a3 w0 `. e
  39.       9   57    
复制代码

6 O" q' t/ U& H% a

按键

键码

按键

键码

按键

键码

按键

键码

A

65

6(数字键盘)

102

;

59

:

58

B

66

7(数字键盘)

103

=

61

+

                   43

C

67

8(数字键盘)

104

,

44

<

60

D

68

9(数字键盘)

105

-

45

_

95

E

69

*

106

.

46

>

62

F

70

!

33

/

47

?

63

G

71

Enter

13

`

96

~

126

H

72

@

64

[

91

{

123

I

73

#

35

\

92

|

124

J

74

$

36

}

125

]

93

K

75

F1

112

a

97

b

98

L

76

F2

113

c

99

d

100

M

77

F3

114

e

101

f

102

N

78

F4

115

g

103

h

104

O

79

F5

116

i

105

j

106

P

80

F6

117

k

107

l

108

Q

81

F7

118

m

109

n

110

R

82

F8

119

o

111

p

112

S

83

F9

120

q

113

r

114

T

84

F10

121

s

115

t

116

U

85

F11

122

u

117

v

118

V

86

F12

123

w

119

x

120

W

87

Backspace

8

y

121

z

122

X

88

Tab

9

0(数字键盘)

96

Up Arrow

38

Y

89

Clear

12

1(数字键盘)

97

Right Arrow

39

Z

90

Shift

16

2(数字键盘)

98

Down Arrow

40

0(小键盘)

48

Control

17

3(数字键盘)

99

Insert

45

1(小键盘)

49

Alt

18

4(数字键盘)

100

Delete

46

2(小键盘)

50

Cap Lock

20

5(数字键盘)

101

Num Lock

144

3(小键盘)

51

Esc

27

2(数字键盘)

98

Down Arrow

40

4(小键盘)

52

Spacebar

32

3(数字键盘)

99

Insert

45

5(小键盘)

53

Page Up

33

4(数字键盘)

100

Delete

46

6(小键盘)

54

Page Down

34

5(数字键盘)

101

Num Lock

144

7(小键盘)

55

End

35


8 q8 d  U6 c* f9 a8 f% C

8(小键盘)

56

Home

36


1 V( e+ K5 ^& G" L# u& j) x5 U! g

9(小键盘)

57

Left Arrow

37


' T  W+ w0 T1 [, Y

- _1 _& i; u+ K. P& |7 D7 n5 `& _! b: b+ Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:31 , Processed in 0.146008 second(s), 20 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!