lghub驱动级别鼠标控制的动态链接库dll

本文介绍了一个Python库,通过ctypes调用dll文件,提供高级别的鼠标控制功能,如滑轮模拟、平滑移动和精确点击,特别适合于脚本编写和FPS游戏中的鼠标操作。附有下载链接。
摘要由CSDN通过智能技术生成

这个是经过修改后完善后的版本,纯软件任何鼠标均可使用,驱动级别不会被屏蔽,过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()

下载链接:ghub驱动官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值