Windows提供了一个模拟键盘API函数keybd_event(),该函数原型为:keybd_event(bVk, bScan, dwFlags, dwExtraInfo),其中:

  • 第一个参数:虚拟键码(键盘键码对照表见附录);
  • 第二个参数:硬件扫描码,一般设置为0即可;
  • 第三个参数:函数操作的一个标志位,如果值为KEYEVENTF_EXTENDEDKEY则该键被按下,也可设置为0即可,如果值为KEYEVENTF_KEYUP则该按键被释放;
  • 第四个参数:定义与击键相关的附加的32位值,一般设置为0即可。

比如模拟按下“Ctrl+C”和“A”键:

from win32api import keybd_event
from win32con import KEYEVENTF_KEYUP
import timedef press_a():keybd_event(65, 0, 0, 0)keybd_event(65, 0, KEYEVENTF_KEYUP, 0)def ctrl_c():keybd_event(17, 0, 0, 0)keybd_event(67, 0, 0, 0)keybd_event(67, 0, KEYEVENTF_KEYUP, 0)keybd_event(17, 0, KEYEVENTF_KEYUP, 0)if __name__ == '__main__':while True:ctrl_c()press_a()time.sleep(1)

当运行程序,并打开一个命令行界面时, 效果就是每隔1秒按一次组合键“Ctrl+C”和“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(小键盘)

56

Home

36

9(小键盘)

57

Left Arrow

37

按键示例:

#Giant dictonary to hold key name and VK value
VK_CODE = {'backspace':0x08,'tab':0x09,'clear':0x0C,'enter':0x0D,'shift':0x10,'ctrl':0x11,'alt':0x12,'pause':0x13,'caps_lock':0x14,'esc':0x1B,'spacebar':0x20,'page_up':0x21,'page_down':0x22,'end':0x23,'home':0x24,'left_arrow':0x25,'up_arrow':0x26,'right_arrow':0x27,'down_arrow':0x28,'select':0x29,'print':0x2A,'execute':0x2B,'print_screen':0x2C,'ins':0x2D,'del':0x2E,'help':0x2F,'0':0x30,'1':0x31,'2':0x32,'3':0x33,'4':0x34,'5':0x35,'6':0x36,'7':0x37,'8':0x38,'9':0x39,'a':0x41,'b':0x42,'c':0x43,'d':0x44,'e':0x45,'f':0x46,'g':0x47,'h':0x48,'i':0x49,'j':0x4A,'k':0x4B,'l':0x4C,'m':0x4D,'n':0x4E,'o':0x4F,'p':0x50,'q':0x51,'r':0x52,'s':0x53,'t':0x54,'u':0x55,'v':0x56,'w':0x57,'x':0x58,'y':0x59,'z':0x5A,'numpad_0':0x60,'numpad_1':0x61,'numpad_2':0x62,'numpad_3':0x63,'numpad_4':0x64,'numpad_5':0x65,'numpad_6':0x66,'numpad_7':0x67,'numpad_8':0x68,'numpad_9':0x69,'multiply_key':0x6A,'add_key':0x6B,'separator_key':0x6C,'subtract_key':0x6D,'decimal_key':0x6E,'divide_key':0x6F,'F1':0x70,'F2':0x71,'F3':0x72,'F4':0x73,'F5':0x74,'F6':0x75,'F7':0x76,'F8':0x77,'F9':0x78,'F10':0x79,'F11':0x7A,'F12':0x7B,'F13':0x7C,'F14':0x7D,'F15':0x7E,'F16':0x7F,'F17':0x80,'F18':0x81,'F19':0x82,'F20':0x83,'F21':0x84,'F22':0x85,'F23':0x86,'F24':0x87,'num_lock':0x90,'scroll_lock':0x91,'left_shift':0xA0,'right_shift ':0xA1,'left_control':0xA2,'right_control':0xA3,'left_menu':0xA4,'right_menu':0xA5,'browser_back':0xA6,'browser_forward':0xA7,'browser_refresh':0xA8,'browser_stop':0xA9,'browser_search':0xAA,'browser_favorites':0xAB,'browser_start_and_home':0xAC,'volume_mute':0xAD,'volume_Down':0xAE,'volume_up':0xAF,'next_track':0xB0,'previous_track':0xB1,'stop_media':0xB2,'play/pause_media':0xB3,'start_mail':0xB4,'select_media':0xB5,'start_application_1':0xB6,'start_application_2':0xB7,'attn_key':0xF6,'crsel_key':0xF7,'exsel_key':0xF8,'play_key':0xFA,'zoom_key':0xFB,'clear_key':0xFE,'+':0xBB,',':0xBC,'-':0xBD,'.':0xBE,'/':0xBF,'`':0xC0,';':0xBA,'[':0xDB,'\\':0xDC,']':0xDD,"'":0xDE,'`':0xC0}def press(*args):'''one press, one release.accepts as many arguments as you want. e.g. press('left_arrow', 'a','b').'''for i in args:win32api.keybd_event(VK_CODE[i], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)def pressAndHold(*args):'''press and hold. Do NOT release.accepts as many arguments as you want.e.g. pressAndHold('left_arrow', 'a','b').'''for i in args:win32api.keybd_event(VK_CODE[i], 0,0,0)time.sleep(.05)def pressHoldRelease(*args):'''press and hold passed in strings. Once held, releaseaccepts as many arguments as you want.e.g. pressAndHold('left_arrow', 'a','b').this is useful for issuing shortcut command or shift commands.e.g. pressHoldRelease('ctrl', 'alt', 'del'), pressHoldRelease('shift','a')'''for i in args:win32api.keybd_event(VK_CODE[i], 0,0,0)time.sleep(.05)for i in args:win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)time.sleep(.1)def release(*args):'''release depressed keysaccepts as many arguments as you want.e.g. release('left_arrow', 'a','b').'''for i in args:win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)def typer(string=None,*args):
##    time.sleep(4)for i in string:if i == ' ':win32api.keybd_event(VK_CODE['spacebar'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['spacebar'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '!':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['1'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['1'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '@':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['2'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['2'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '{':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['['], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['['],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '?':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['/'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['/'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == ':':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE[';'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE[';'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '"':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['\''], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['\''],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '}':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE[']'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE[']'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '#':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['3'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['3'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '$':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['4'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['4'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '%':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['5'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['5'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '^':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['6'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['6'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '&':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['7'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['7'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '*':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['8'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['8'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '(':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['9'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['9'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == ')':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['0'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['0'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '_':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['-'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['-'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '=':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['+'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['+'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '~':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['`'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['`'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '<':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE[','], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE[','],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == '>':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['.'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['.'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'A':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['a'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['a'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'B':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['b'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['b'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'C':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['c'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['c'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'D':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['d'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['d'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'E':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['e'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['e'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'F':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['f'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['f'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'G':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['g'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['g'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'H':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['h'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['h'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'I':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['i'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['i'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'J':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['j'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['j'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'K':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['k'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['k'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'L':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['l'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['l'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'M':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['m'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['m'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'N':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['n'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['n'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'O':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['o'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['o'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'P':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['p'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['p'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'Q':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['q'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['q'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'R':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['r'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['r'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'S':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['s'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['s'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'T':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['t'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['t'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'U':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['u'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['u'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'V':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['v'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['v'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'W':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['w'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['w'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'X':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['x'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['x'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'Y':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['y'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['y'],0 ,win32con.KEYEVENTF_KEYUP ,0)elif i == 'Z':win32api.keybd_event(VK_CODE['left_shift'], 0,0,0)win32api.keybd_event(VK_CODE['z'], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE['left_shift'],0 ,win32con.KEYEVENTF_KEYUP ,0)win32api.keybd_event(VK_CODE['z'],0 ,win32con.KEYEVENTF_KEYUP ,0)else:    win32api.keybd_event(VK_CODE[i], 0,0,0)time.sleep(.05)win32api.keybd_event(VK_CODE[i],0 ,win32con.KEYEVENTF_KEYUP ,0)

参考:

keybd_event模拟键盘输入

Vitual keystroke example

keybd_event模拟键盘输入相关推荐

  1. Python win32api.keybd_event模拟键盘输入

    Python  win32api.keybd_event模拟键盘输入 win32api.keybd_event 该函数原型:keybd_event(bVk, bScan, dwFlags, dwExt ...

  2. python模拟键盘输入字符_Python | 根据关键字符串遍历窗口 模拟键盘输入操作

    在自动化脚本测试某个程序的过程中,偶尔会因为文件读取操作弹出各种信息窗口,导致自动化脚本无法继续往下执行.为了解决这个问题,需要隔一段时间对信息窗口进行一次遍历,针对需要处理的窗口进行模拟键盘输入操作 ...

  3. python 模拟键盘_Python 模拟键盘输入 | 学步园

    Python 模拟键盘输入,留着备用. #coding=utf-8 import win32gui,win32api,win32con import time import threading def ...

  4. vc++6.0 模拟鼠标点击代码 木马程序的编写 VC 模拟键盘输入

    From: http://fengqing888.blog.163.com/blog/static/33011416201112124481/ MFC 工程 把以下代码放到你想要响应的函数里面就行 C ...

  5. python 模拟键盘输入组合键_Python 模拟键盘输入

    Python 模拟键盘输入,留着备用. #coding=utf-8 import win32gui,win32api,win32con import time import threading def ...

  6. java中像scanf一样多个输入_VB模拟键盘输入的N种方法

    VB模拟键盘输入的N种方法http://bbs.csdn.net/topics/90509805hd378发表于: 2006-12-24 14:35:39用VB模拟键盘事件的N种方法 键盘是我们使用计 ...

  7. C语言实现模拟键盘输入字符串

    部分应用或网站开启了禁止粘贴功能,该代码可以通过模拟键盘输入的方式,将英文输入至输入框中 ,具体使用说明请见如下介绍: 用户键字符串粘贴至小黑屏后按回车启动模拟输入功能,当用户切换至不能直接粘贴的输入 ...

  8. c#语言模拟键盘输入,C#如何模拟真实的键盘输入

    匿名用户 1级 2018-05-27 回答 //直接给你贴一个我自己写的类,模拟键盘输入字符 using System.Runtime.InteropServices; namespace lison ...

  9. Win下模拟键盘输入的三种办法

    最近闲着没事,就随意浏览博客,突然发现了一种模拟键盘输入的办法(之前一直想破脑袋的都没有想到的),然后借此机会说明一下. 具体实现方法 1)借用粘贴板 这是比较容易想到的,也最受程序员鄙视的一种办法, ...

  10. 模拟键盘输入的keycode

    今天有个弹出框的element一直找不到,换了种方法关掉,就是用模拟键盘输入,找到以下对应的keycode,先记录下来,说不定以后用得上/*--------------------edit by 20 ...

最新文章

  1. 解决Windows下Arm下Linux下Qt4程序的中文乱码问题
  2. Python 官方推荐的一款打包工具
  3. Spring MVC的DispatcherServlet – Java开发人员应该知道的10件事
  4. 问题 1066: 2004年秋浙江省计算机等级考试二级C 编程题(2)
  5. go语言 expected ; found a
  6. 小杜机器人线下店_阿里线下卖车已成事实,阿里造车还会远吗?
  7. SpringMvc-参数为数组
  8. puppeteer中如何复用启动中的浏览器
  9. matlab 集合操作
  10. java oracle连接数据库_Java 连接 Oracle 数据库
  11. R实战 Nomogram(诺莫图列线图)及其Calibration校准曲线绘制
  12. 特征工程——用转换器抽取特征
  13. [移动GIS] 4.1-TDOA定位
  14. 百加得改变生产方式,协助生产洗手液
  15. Java实现基于朴素贝叶斯的情感词分析
  16. IBM3650系列服务器前故障诊断面板灯显示含义
  17. 秉火429笔记之二寄存器
  18. html按住语音如何看前面内容,单音语音内容.html
  19. 【GIS】高分辨率遥感影像智能解译
  20. Linux系统引导过程及修复引导

热门文章

  1. CentOS 压缩解压
  2. 人工智能部分相关名词解释
  3. Flask 框架 网页跳转详解。
  4. STM32读写RAM
  5. Windows兼容性设置图文教程,Windows兼容模式怎么设置?
  6. Mac下简单socket连接代码
  7. oracle怎么用dmp文件,oracle 11g 如何打开dmp文件
  8. 百度地图开发(一)----项目准备
  9. 油罐清洗抽吸系统设计
  10. 2021-06-30