使用python监听、模拟鼠标键盘事件

最近守望职业选手疑似开挂事件挺热闹的,在下小菜一枚,并不能从视频中看出端倪。看了一些关于外挂的讨论,自动点射和压枪只需在鼠标驱动上做些改动即可,自瞄或其他高级功能则需要读内存或修改游戏文件,检测也更容易。

士兵76长按左键扫射4发子弹之后准星就会小范围随机飘,所以想自己实现一个长按左键变自动点射的程序。

仅作测试使用,鄙视一切外挂,玩游戏就好好玩。

选择使用python,用到的库pyHook,pywin32

pyHook的文档:http://pyhook.sourceforge.net/doc_1.5.0/

接下来照着文档写就可以了,代码如下

 1 # coding: utf-8
 2 
 3 import pythoncom
 4 import pyHook
 5 import win32api
 6 import win32con
 7 import time
 8 import threading
 9 import random
10 
11 def send_click():
12     global down_num,up_num
13     while(1):
14         if down_num!=up_num:        
15             win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
16             #连射多少秒,大约0.1秒一发子弹
17             time.sleep(random.uniform(0.38,0.42))
18             win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
19             #连发之间的停顿时间
20             time.sleep(random.uniform(0.25,0.29))
21             print 'click ok'
22         
23 def onMouse_leftdown(event):
24     # 监听鼠标左键按下事件
25     global down_num
26     down_num += 1
27     print "left DOWN DOWN"+str(down_num)
28     return True
29     # 返回 True 表示响应此事件,False表示拦截
30 
31 def onMouse_leftup(event):
32     # 监听鼠标左键弹起事件
33     global up_num
34     up_num += 1
35     print "left UP UP UP"+str(up_num)
36     return True
37 
38 def main():
39     hm = pyHook.HookManager()
40 
41     hm.MouseLeftDown = onMouse_leftdown
42     hm.MouseLeftUp = onMouse_leftup
43     
44     hm.HookMouse()
45     
46     # 进入循环,如不手动关闭,程序将一直处于监听状态
47     pythoncom.PumpMessages()
48 
49 if __name__ == "__main__":
50     down_num = 0
51     up_num = 0
52     # 新线程执行的代码:
53     print('thread %s is running...' % threading.current_thread().name)
54     t = threading.Thread(target=send_click, name='sendThread')
55     t.start()
56     #t.join()
57     main()

效果是出来了,然而并没有什么卵用。

 

转载于:https://www.cnblogs.com/axiong/p/5937203.html

你可能感兴趣的:(使用python监听、模拟鼠标键盘事件)