这个是经过修改后完善后的版本,纯软件任何鼠标均可使用,驱动级别不会被屏蔽,过ACE检测,可用于脚本以及鼠标模拟,包括各类fps游戏。
功能即函数
python使用示例
import ctypes
import time
driver = ctypes.WinDLL(r'./mouse_dll.dll')
class MouseState(ctypes.Structure): # 定义接受结构体
_fields_ = [
("leftButtonDown", ctypes.c_int),
("rightButtonDown", ctypes.c_int),
("middleButtonDown", ctypes.c_int),
("x1ButtonDown", ctypes.c_int),
("x2ButtonDown", ctypes.c_int)
]
# 声明函数原型
listen_mouse = driver.listen_mouse
listen_mouse.restype = MouseState
with open('user.txt', 'r') as f:
lines = f.readlines()
email = lines[0].strip().encode('utf-8')
password = lines[1].strip().encode('utf-8')
driver.mouse_open(email, password) #传入邮箱和密码
#在此处进行逻辑处理 鼠标采用模拟真人鼠标的移动平滑算法,如果该处调节oprt用于fps游戏可以很好模拟人的鼠标移动的平滑度
start_time = time.time()
driver.mouse_move(-330,10,0, 3)
end_time = time.time()-start_time
print("平滑度为3时鼠标移动所需时间:{:.3f}s".format(end_time))
time.sleep(2)
start_time = time.time()
driver.mouse_move(330,-10,0, 2)
end_time = time.time()-start_time
print("平滑度为2时鼠标移动所需时间:{:.3f}s".format(end_time))
time.sleep(2)
start_time = time.time()
driver.mouse_move(-330,10,0, 1)
end_time = time.time()-start_time
print("平滑度为1时鼠标移动所需时间:{:.3f}s".format(end_time))
#监听鼠标的按键情况, 获取当前用户按下或松开鼠标的状态,此响应为1ms级别,比绝大部分对于鼠标响应代码以及软件都要快
mouse_state = listen_mouse() # 调用获取鼠标状态函数
# 打印获取用户的的鼠标状态.
print("Left button down:", mouse_state.leftButtonDown) # 如果值为1表示当前鼠标左键正在被按下,0表示松开
print("Right button down:", mouse_state.rightButtonDown) # 如果值为1表示当前鼠标右正在被按下,0表示松开
print("Middle button down:", mouse_state.middleButtonDown) # 如果值为1表示当前鼠标中键正在被按下,0表示松开
print("X1 button down:", mouse_state.x1ButtonDown) # 如果值为1表示当前鼠标侧键1正在被按下,0表示松开
print("X2 button down:", mouse_state.x2ButtonDown) # 如果值为1表示当前鼠标侧键2正在被按下,0表示松开
driver.mouse_close() # 关闭鼠标
mouse_open(char* email, char* password) #打开mouse控制调用传入参数即注册的email和password即可。
mouse_close(void) #关闭控制
mouse_move(int x, int y, char wheel, int oprt); # 前两个参数分别为x轴、y轴的移动的像素值,第三个参数wheel为滑轮控制,第四个参数oprt为每次的平滑移动的程度有三个范围(1:没有平滑,2:小幅度平滑 3:大幅度平滑)(此处采用模拟真人鼠标的移动平滑算法,如果该处调节oprt用于fps游戏可以很好模拟人的鼠标移动的平滑度)。
mouse_click(int button) # button为1表示点击鼠标左键。2为右键
mouse_press(int button) # button为1表示按下鼠标左键。2为右键
mouse_release(void) # 表示松开按下鼠标。
listen_mouse() # 获取当前用户按下或松开鼠标的状态,此响应为1ms级别,比绝大部分对于鼠标响应代码以及软件都要快。分别有五个返回值: int leftButtonDown; int rightButtonDown; int middleButtonDown; int x1ButtonDown; int x2ButtonDown;对应的1表示当前按键按下,0表示松开,用法例子如上面的代码所示。
我将其写成一个类python直接调用:
import ctypes
class MouseState(ctypes.Structure): # 鼠标监听状态
_fields_ = [
("leftButtonDown", ctypes.c_int),
("rightButtonDown", ctypes.c_int),
("middleButtonDown", ctypes.c_int),
("x1ButtonDown", ctypes.c_int),
("x2ButtonDown", ctypes.c_int)
]
class MouseOpt():
def __init__(self):
super().__init__()
#print("鼠标加载成功!!!")
try: # 加载驱动
# 获取当前绝对路径
self.driver = ctypes.WinDLL(r'./mouse_dll.dll')
# 声明函数原型
self.listen_mouse = self.driver.listen_mouse
self.listen_mouse.restype = MouseState
email = "example@qq.com".encode('utf-8') # example@qq.com为注册的email此处必须将后面必须指定email的编码为('utf-8')
password = "********".encode('utf-8') # password是你注册时候的密码此处必须将后面必须指定email的编码为('utf-8')
self.driver.mouse_open(email, password) #控制鼠标
except FileNotFoundError:
print(f'错误, DLL 文件没有找到')
def click(self, code): # 点击鼠标左键
self.driver.mouse_click(code)
def move(self, x, y, oprt): # 移动鼠标
self.driver.mouse_move(x, y, 0, oprt)
def press(self, oprt):
self.driver.mouse_press(oprt)
def listen_mouse(self): # 获取鼠标的按键情况
# 调用获取鼠标状态函数
return self.listen_mouse()