python模拟鼠标按键
搞这个一是昨天临时受群里影响突发奇想想整一个问号发送器。。二是准备自己弄个badusb(虽然好像usb开发板都不支持python语言,不过要说的话原理都是模拟按键和鼠标)
我用的win32库,做起来非常简单啊,就记录一下代码
安装只需要pip install pywin32
就行,使用则导入相应的库
如这个用到的是win32api
和win32con
模拟鼠标
- 获取鼠标位置
win32api.GetCursorPos()
返回的是元组,无法修改,可以整个新数组记录坐标,修改成想要的过后用tuple()
- 设置鼠标位置
win32api.SetCursorPos((x, y))
- 鼠标事件
左键按下
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
左键放开
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
右键按下
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
右键放开
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
模拟滚轮
win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL,0,0,-500)
中键按下
win32api.mouse_event(win32con.MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
中键放开
win32api.mouse_event(win32con.MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
模拟键盘
- 键盘事件
按下键
win32api.keybd_event(VK_CODE[word], 0, 0, 0)
放开键
win32api.keybd_event(VK_CODE[word], 0, win32con.KEYEVENTF_KEYUP, 0)
问号脚本
问号脚本如下
import win32api
import win32con
import time
def get_new_mouse():
coordinate=win32api.GetCursorPos()
wide=coordinate[0]-30
high=coordinate[1]
new_coordinate=[]
new_coordinate.append(wide)
new_coordinate.append(high)
new_coordinate=tuple(new_coordinate)
return new_coordinate
def mouse_down():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
def mouse_up():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
key_map = {
"0": 49, "1": 50, "2": 51, "3": 52, "4": 53, "5": 54, "6": 55, "7": 56, "8": 57, "9": 58,
"A": 65, "B": 66, "C": 67, "D": 68, "E": 69, "F": 70, "G": 71, "H": 72, "I": 73, "J": 74,
"K": 75, "L": 76, "M": 77, "N": 78, "O": 79, "P": 80, "Q": 81, "R": 82, "S": 83, "T": 84,
"U": 85, "V": 86, "W": 87, "X": 88, "Y": 89, "Z": 90
}
def key_down(key):
key = key.upper()
vk_code = key_map[key]
win32api.keybd_event(vk_code,win32api.MapVirtualKey(vk_code,0),0,0)
def key_up(key):
key = key.upper()
vk_code = key_map[key]
win32api.keybd_event(vk_code, win32api.MapVirtualKey(vk_code, 0), win32con.KEYEVENTF_KEYUP, 0)
def key_press(key):
key_down(key)
time.sleep(0.02)
key_up(key)
def wenhao():
key_press('g')
time.sleep(0.02)
mouse_down()
time.sleep(0.02)
new_place=get_new_mouse()
win32api.SetCursorPos(new_place)
time.sleep(0.02)
mouse_up()
if __name__ == '__main__':
time.sleep(6)
for i in range(0,10):
wenhao()
time.sleep(0.5)
print('done
')
exit()
虽然无法使用(这就是lol的防作弊么),但里面用于操作的函数还是比较完善了。
下为更加完善的字母表
字母和数字键 数字小键盘的键 功能键 其它键
键 键码 键 键码 键 键码 键 键码
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Ctrl 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57