当前位置: 首页 > news >正文

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

这里写目录标题

  • Python自动点击器开发教程 - 支持键盘连按和鼠标连点
    • 项目介绍
    • 开发环境
    • 安装依赖
    • 核心代码解析
      • 1. 键盘模拟实现
      • 2. 鼠标点击实现
    • 开发要点
    • 使用说明
    • 注意事项
    • 优化建议
    • 打包发布
    • 项目源码
    • 开发心得
    • 参考资料
    • 成品工具

项目介绍

这是一个使用Python开发的自动点击器,支持键盘按键连续点击和鼠标连点功能。主要特点:

  • 支持键盘按键和鼠标两种模式
  • 可自定义按键序列(支持多个按键连续点击)
  • 精确的时间控制(最小可到1毫秒)
  • 简洁的图形界面
  • 全局快捷键支持
  • ⚠️鼠标左键连点,点运行按钮会导致卡住,建议按快捷键F8
    在这里插入图片描述

开发环境

  • Python 3.x
  • 依赖库:
    • pywin32
    • keyboard
    • tkinter (Python自带)

安装依赖

pip install pywin32 keyboard

核心代码解析

1. 键盘模拟实现

def simulate_key_press(self, key, press_time):"""模拟真实的键盘按键"""if key.lower().strip() in self.key_mapping:scan_code = self.key_mapping[key.lower().strip()]# 模拟按键按下win32api.keybd_event(0, scan_code, win32con.KEYEVENTF_SCANCODE, 0)time.sleep(press_time)  # 按住时间# 模拟按键释放win32api.keybd_event(0, scan_code, win32con.KEYEVENTF_SCANCODE | win32con.KEYEVENTF_KEYUP, 0)

2. 鼠标点击实现

def simulate_mouse_click(self):"""模拟真实的鼠标点击"""try:if self.mouse_button.get() == "左键":ctypes.windll.user32.mouse_event(0x0002, 0, 0, 0, 0)  # 按下time.sleep(self.press_time.get())ctypes.windll.user32.mouse_event(0x0004, 0, 0, 0, 0)  # 释放else:ctypes.windll.user32.mouse_event(0x0008, 0, 0, 0, 0)  # 按下time.sleep(self.press_time.get())ctypes.windll.user32.mouse_event(0x0010, 0, 0, 0, 0)  # 释放except Exception as e:print(f"鼠标点击出错: {str(e)}")

开发要点

  1. 键盘事件模拟

    • 使用 win32api.keybd_event 实现键盘事件模拟
    • 通过扫描码映射表支持多种按键
    • 精确控制按键按下和释放时间
  2. 鼠标事件模拟

    • 使用 ctypes.windll.user32.mouse_event 实现鼠标点击
    • 支持左键和右键点击
    • 可调节点击间隔和按住时间
  3. 多线程处理

    • 使用线程实现连续点击功能
    • 确保UI响应不被阻塞
    • 安全的线程终止机制
  4. 用户界面设计

    • 使用tkinter创建简洁的图形界面
    • 提供直观的参数调节控件
    • 实时状态显示

使用说明

  1. 键盘连点模式

    • 在输入框中输入要连续点击的按键,多个按键用逗号分隔
    • 例如:w,a,s,d 将依次点击这些按键
  2. 鼠标连点模式

    • 选择要点击的鼠标按键(左键或右键)
    • 调整点击间隔和按住时间
  3. 时间设置

    • 按住时间:每次点击按住的时长
    • 间隔时间:两次点击之间的间隔
  4. 快捷键

    • F8:开始/停止
    • F9:退出程序

注意事项

  1. 程序使用了Windows API,仅支持Windows系统
  2. 部分游戏可能有反作弊系统,使用需谨慎
  3. 建议先用较长的间隔时间测试
  4. 如果点击太快可能会被某些程序屏蔽

优化建议

  1. 可以添加自定义快捷键功能
  2. 可以增加按键组合功能
  3. 可以添加点击次数限制
  4. 可以保存和加载配置文件

打包发布

使用PyInstaller打包成exe文件:

pip install pyinstaller
pyinstaller --noconfirm --onefile --windowed --name "自动点击器" auto_clicker.py

项目源码

完整源码已上传到文章开头。欢迎下载使用,如果对你有帮助请点个赞!

开发心得

  1. Windows API的使用需要注意权限问题
  2. 模拟输入时要考虑真实性,不能太机械
  3. 多线程处理要注意安全退出
  4. 用户界面要简洁直观

参考资料

  1. Win32 API Documentation
  2. Python tkinter Documentation
  3. PyWin32 Documentation

成品工具

链接: https://pan.baidu.com/s/1btri6hBjbiZkxmVLLmvDpg
提取码: 6666

如果觉得文章对你有帮助,欢迎点赞收藏!如有问题也可以在评论区讨论。

相关文章:

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

Python自动点击器开发教程 - 支持键盘连按和鼠标连点 这里写目录标题 Python自动点击器开发教程 - 支持键盘连按和鼠标连点项目介绍开发环境安装依赖核心代码解析1. 键盘模拟实现2. 鼠标点击实现 开发要点使用说明注意事项优化建议打包发布项目源码开发心得参考资料成品工具 项…...

C++ 链表List使用与实现:拷贝交换与高效迭代器细致讲解

目录 list的使用: 构造与赋值 元素访问 修改操作 容量查询 链表特有操作 拼接(Splice) C11 新增方法 注意: stl_list的模拟实现: 一、链表节点设计的艺术 1.1 结构体 vs 类的选择 二、迭代器实现的精髓 2…...

Manus联创澄清:我们并未使用MCP技术

摘要 近日,Manus联创针对外界关于其产品可能涉及“沙盒越狱”的疑问进行了正式回应。公司明确表示并未使用Anthropic的MCP(模型上下文协议)技术,并强调MCP是一个旨在标准化应用程序与大型语言模型(LLM)之间…...

ACE学习2——write transaction

用于处理缓存行的数据更新到主内存(main memory)的操作。 以下是用于更新主内存的几种事务类型: WriteBack: WriteBack事务用于将cache中的dirty态的cacheline写回主存,以释放cache中的cacheline,用于存…...

c++ 返回引用

在C中,返回引用是一种常见的做法,特别是在需要返回大型对象时,以避免不必要的复制,从而提高程序的效率。返回引用通常有两种情况:返回局部变量的引用和返回成员变量的引用。下面分别讨论这两种情况以及如何安全地实现它…...

Docker篇

1.docker环境搭建: 1.1软件仓库的配置rhel9: #cd/etc/yum.repos.d #vim docker.repo [docker] namedocker-ce baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable gpgcheck0 1.2安装docker并且启动服务 yum install -y dock…...

TypeScript基础类型详解:与JavaScript的对比与核心价值

TypeScript作为JavaScript的超集,最大的特性是引入了静态类型系统。本文将基于TypeScript官网内容,解析其基础类型设计,并与ES/JavaScript进行对比,揭示类型系统的实际价值。 一、基础类型全景图 1. 原生类型的强化 JavaScript原…...

Linux《基础开发工具(中)》

在之前的Linux《基础开发工具(上)》当中已经了解了Linux当中到的两大基础的开发工具yum与vim;了解了在Linux当中如何进行软件的下载以及实现的基本原理、知道了编辑器vim的基本使用方式,那么接下来在本篇当中将接下去继续来了解另…...

CPU 负载 和 CPU利用率 的区别

简单记录下 top 命令中,CPU利用率核CPU负载的概念, (1)CPU利用率:指在一段时间内 表示 CPU 实际工作时间占总时间的百分比。表示正在执行进程的时间比例,包括用户空间和内核空间程序的执行时间。通常包含以…...

vue源码(二)

文章目录 数据代理示例 初始化组件实例计算属性基本用法ComputedReflmpl类计算属性的创建 Vue3的特点及优势声明式框架采用虚拟DOM区分编译时和进行时 Vue3设计思想 数据代理 示例 以下代码主要是有一个msg的响应式数据,点击按钮后修改msg的内容。根据代码可知有两…...

Ubuntu切换lowlatency内核

文章目录 一. 前言二. 开发环境三. 具体操作 一. 前言 低延迟内核(Lowlatency Kernel) 旨在为需要低延迟响应的应用程序设计的内核版本。Linux-lowlatency特别适合音频处理、实时计算、游戏和其他需要及时响应的实时任务。其主要特点是优化了中断处理、调…...

C++算法——差分

1.差分 差分与前缀和的核心思想相同,是预处理,可以在暴力枚举的过程中,快速给出查询的结果,从而优化时间复杂度。 是经典的用空间替换时间的做法。 2.一维差分数组 前缀和与差分是⼀对互逆的运算,对差分数组做前缀…...

猫耳大型活动提效——组件低代码化

1. 引言 猫耳前端在开发活动的过程中,经历过传统的 pro code 阶段,即活动页面完全由前端开发编码实现,直到 2020 年接入公司内部的低代码活动平台,满足了大部分日常活动的需求,运营可自主配置活动并上线,释…...

亿级分布式系统架构演进实战(二)- 横向扩展(服务无状态化)

亿级分布式系统架构演进实战(一)- 总体概要 服务无状态化详细设计 目标:确保服务实例完全无状态,可任意扩缩容 1. 会话存储改造(Session Management) 核心问题:传统单体应用中,用…...

零成本短视频爆款制造手册

——Q版+情感+互动的流量密码拆解 适用平台:抖音/快手/视频号 核心指标:点赞率>10% | 完播率>40% | 涨粉成本<0.3元 一、底层逻辑框架 1. 爆款元素融合公式 [ 3秒钩子 ] + [ 7秒沉浸 ] + [ 5秒引爆 ] = 15秒黄金结构 │ │ └─▶ 互动指令+情感…...

红队思想:Live off the Land - 靠山吃山,靠水吃水

在网络安全领域,尤其是红队(Red Team)渗透测试中,“Live off the Land”(简称 LotL,中文可译为“靠山吃山,靠水吃水”)是一种极具隐秘性和实用性的攻击策略。这一理念源于现实生活中…...

C语言八股---预处理,编译,汇编与链接篇

前言 从多个.c文件到达一个可执行文件的四步:   预处理–>编译–>汇编–>链接 预处理 预处理过程就是预处理器处理这些预处理指令(要不然编译器完全不认识),最终会生成 main.i的文件 主要做的事情有如下几点: 展开头文件展开宏条件编译删除注释添加行号等信息保留…...

平衡二叉树(AVL树)

平衡二叉树是啥我就不多说了,本篇博客只讲原理与方法。 首先引入平衡因子的概念。平衡因子(Balance Factor),以下简称bf。 bf 右子树深度 - 左子树深度。平衡结点的平衡因子可为:-1,0,1。除此…...

SpringBoot(一)--搭建架构5种方法

目录 一、⭐Idea从spring官网下载打开 2021版本idea 1.打开创建项目 2.修改pom.xml文件里的版本号 2017版本idea 二、从spring官网下载再用idea打开 三、Idea从阿里云的官网下载打开 ​编辑 四、Maven项目改造成springboot项目 五、从阿里云官网下载再用idea打开 Spri…...

RabbitMQ使用延迟消息

RabbitMQ使用延迟消息 1.什么情况下使用延迟消息 延迟消息适用于需要在一段时间后执行某些操作的场景,常见的有以下几类: 1.1. 订单超时取消(未支付自动取消) 场景: 用户下单后,如果 30 分钟内未付款&a…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...

Ray框架:分布式AI训练与调参实践

Ray框架&#xff1a;分布式AI训练与调参实践 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 Ray框架&#xff1a;分布式AI训练与调参实践摘要引言框架架构解析1. 核心组件设计2. 关键技术实现2.1 动态资源调度2.2 …...