6.26 WindowsAPI:pywin32.win32api
6.26.1 鼠标相关
6.26.1.1 SetCursorPos
移动光标到指定位置(以桌面左上角为0,0做参考)
win32api.SetCursorPos((left, right))
6.26.1.2 mouse_event
操作鼠标
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) # 按下鼠标左键
注意:360等安全软件会拦截虚拟按键,可以添加信任或者关闭。
示例1:移动鼠标到特定位置并模拟鼠标点击
import win32api
import win32con
import time
def mouse_click(left, right):
time.sleep(1)
win32api.SetCursorPos((left, right))
time.sleep(1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
time.sleep(0.2)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
mouse_click(138, 43)
6.26.2 键盘相关
判断大小写状态:
flag = win32api.GetKeyState(win32con.VK_CAPITAL)
若flag == 1,则此时为大写灯点亮状态,若flag == 0,则此时为大写灯灭状态。
键码对照表:
按键 | 键码 | 备注 |
---|---|---|
Backspace | 8 | |
Tab | 9 | |
Clear | 12 | |
Enter | 13 | |
Shift | 16 | |
Control | 17 | |
Alt | 18 | |
Cap Lock | 20 | |
Esc | 27 | |
Spacebar | 32 | |
Page Up | 33 | |
Page Down | 34 | |
End | 35 | |
Home | 36 | |
Left Arrow | 37 | |
Up Arrow | 38 | |
Right Arrow | 39 | |
Down Arrow | 40 | |
+ | 43 | 错误 |
, | 44 | 错误 |
Insert | 45 | |
Delete | 46 | |
/ | 47 | 错误 |
0(小键盘) | 48 | |
1(小键盘) | 49 | |
2(小键盘) | 50 | |
3(小键盘) | 51 | |
4(小键盘) | 52 | |
5(小键盘) | 53 | |
6(小键盘) | 54 | |
7(小键盘) | 55 | |
8(小键盘) | 56 | |
9(小键盘) | 57 | |
: | 58 | 无反应 |
; | 59 | 无反应 |
< | 60 | 无反应 |
= | 61 | 无反应 |
> | 62 | 无反应 |
? | 63 | 无反应 |
@ | 64 | 无反应 |
A、a | 65 | 大小写视大写锁定而定 |
B、b | 66 | 大小写视大写锁定而定 |
C、c | 67 | 大小写视大写锁定而定 |
D、d | 68 | 大小写视大写锁定而定 |
E、e | 69 | 大小写视大写锁定而定 |
F、f | 70 | 大小写视大写锁定而定 |
G、g | 71 | 大小写视大写锁定而定 |
H、h | 72 | 大小写视大写锁定而定 |
I、i | 73 | 大小写视大写锁定而定 |
J、j | 74 | 大小写视大写锁定而定 |
K、k | 75 | 大小写视大写锁定而定 |
L、l | 76 | 大小写视大写锁定而定 |
M、m | 77 | 大小写视大写锁定而定 |
N、n | 78 | 大小写视大写锁定而定 |
O、o | 79 | 大小写视大写锁定而定 |
P、p | 80 | 大小写视大写锁定而定 |
Q、q | 81 | 大小写视大写锁定而定 |
R、r | 82 | 大小写视大写锁定而定 |
S、s | 83 | 大小写视大写锁定而定 |
T、t | 84 | 大小写视大写锁定而定 |
U、u | 85 | 大小写视大写锁定而定 |
V、v | 86 | 大小写视大写锁定而定 |
W、w | 87 | 大小写视大写锁定而定 |
X、x | 88 | 大小写视大写锁定而定 |
Y、y | 89 | 大小写视大写锁定而定 |
Z、z | 90 | 大小写视大写锁定而定 |
[ | 91 | 无反应 |
\ | 92 | 无反应 |
] | 93 | 无反应 |
_ | 95 | 无反应 |
0(数字键盘) | 96 | |
1(数字键盘) | 97 | |
2(数字键盘) | 98 | |
3(数字键盘) | 99 | |
4(数字键盘) | 100 | |
5(数字键盘) | 101 | |
6(数字键盘) | 102 | |
7(数字键盘) | 103 | |
8(数字键盘) | 104 | |
9(数字键盘) | 105 | |
* | 106 | |
F1 | 112 | |
F2 | 113 | |
F3 | 114 | |
F4 | 115 | |
F5 | 116 | |
F6 | 117 | |
F7 | 118 | |
F8 | 119 | |
F9 | 120 | |
F10 | 121 | |
F11 | 122 | |
F12 | 123 | |
{ | 123 | 无反应 |
124 | ||
} | 125 | 无反应 |
~ | 126 | 无反应 |
Num Lock | 144 |
import win32api
# 按下并释放A
a_code = 65
win32api.keybd_event(a_code, 0, 0, 0) # 按下A
win32api.keybd_event(a_code, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放A
# 快捷键Alt+F
win32api.keybd_event(18, 0, 0, 0) # 按下Alt
win32api.keybd_event(70, 0, 0, 0) # 按下F
win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放F
win32api.keybd_event(18, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放Alt