DYTeam ClickHtmlProject - 自动化点击工具

AgenticAI·十月创作之星挑战赛 10w+人浏览 1k人参与

免费源码Git地址:
git clone https://gitee.com/DyTheListKnight/click-html-project.git

博客资源已绑定

项目概述

DYTeam ClickHtmlProject 是一个基于 PyQt5 + HTML/JavaScript 的桌面自动化点击工具,集成了 OCR 文字识别、图像相似度对比、定时点击等多种功能。项目采用模块化设计,支持打包成独立可执行文件,无需安装额外依赖即可运行。

项目架构

1. 启动入口 (main.py)

文件位置: <mcfile name="main.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\main.py"></mcfile>

核心职责:

  • 应用程序入口点,负责初始化整个系统

  • 设置 Qt WebEngine 环境变量和路径配置

  • 调用 htmlViewManager 启动主应用

  • 处理 PyInstaller 打包模式下的资源路径问题

关键功能:

def setup_qtwebengine_paths():
    """配置 Qt WebEngine 路径 - 解决打包后的资源缺失问题"""
    # 设置 WebEngine 进程路径
    # 配置资源文件和本地化文件路径
    # 添加 Qt 库路径到系统 PATH

2. 主干程序 - HTML视图管理器 (htmlViewManager.py)

文件位置: <mcfile name="htmlViewManager.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\python\core\htmlViewManager.py"></mcfile>

核心职责:

  • 创建和管理 PyQt5 应用程序主窗口

  • 集成 QWebEngineView 加载 HTML 界面

  • 实现 JavaScript 与 Python 的双向通信

  • 管理全局热键监听(紧急停止功能)

  • 处理窗口最小化/恢复逻辑

核心类:

  • HTMLAppContainer: 主应用容器,管理 WebView 和窗口属性

  • JavaScriptBridge: JavaScript 与 Python 通信桥梁

  • HotkeySignalHandler: 热键信号处理器,实现跨线程通信

关键特性:

  • 支持开发环境和打包环境的 HTML 页面加载

  • 全局热键监控(按1键紧急停止)

  • 窗口智能最小化/恢复(执行 OCR 时)

3. 服务层 - 事件处理器 (Service.py)

文件位置: <mcfile name="Service.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\python\service\Service.py"></mcfile>

核心职责:

  • 作为 HTML/JavaScript 与 Python 功能模块的唯一交互入口

  • 统一处理所有前端事件并分发到对应服务

  • 管理各个功能服务的生命周期(启动/停止)

  • 协调窗口状态管理(最小化/恢复)

事件处理流程:

JavaScript事件 → Service.handle_event() → 对应功能服务

支持的事件类型:

  • pageLoaded: 页面加载,停止所有服务

  • images: 图像识别和处理

  • ocrStart: 启动 OCR 文字监控

  • similarStart: 启动相似度监控

  • start: 启动定时点击

4. 功能服务模块

4.1 图像服务 (imageService.py)

职责: 处理屏幕截图选择和图像保存

  • 实现屏幕区域选择功能

  • 截图保存到外部存储(D盘固定位置)

  • 与 OCR 处理模块集成

4.2 文字服务 (TextService.py)

职责: OCR 文字识别和监控

  • 调用 Tesseract-OCR 引擎进行文字识别

  • 实现定时文字监控功能

  • 支持中文字符识别

4.3 相似度服务 (SimilarService.py)

职责: 图像相似度对比监控

  • 使用 OpenCV 进行图像模板匹配

  • 实时监控屏幕区域与目标图像的相似度

  • 相似度达到阈值时触发点击操作

4.4 时间服务 (TimeService.py)

职责: 定时点击功能

  • 按照设定的时间间隔执行点击操作

  • 支持启动/停止控制

  • 可配置点击间隔参数

5. 工具模块 (utils)

5.1 外部文件管理器 (ExternalFileManager.py)

文件位置: <mcfile name="ExternalFileManager.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\python\utils\ExternalFileManager.py"></mcfile>

核心职责:

  • 管理项目目录结构创建(D:/DYTeam/ClickHtmlProject/)

  • Tesseract-OCR 解压和路径配置

  • JSON 配置文件的读写管理

  • 图像文件的外部存储管理

关键特性:

  • 智能解压: 检测到目标路径已存在时跳过解压,提升启动速度

  • 固定路径: 所有资源统一存放到 D 盘固定位置,便于管理和维护

  • 懒加载: 只在需要时创建目录和文件

5.2 JSON数据管理器 (JsonDataManager.py)

职责: 动态配置数据管理

  • 管理 Dynamic.json 配置文件

  • 提供配置数据的读取和更新接口

  • 自动创建缺失的配置文件

5.3 OCR处理器 (OCRProcessor.py)

职责: OCR 文字识别核心

  • 调用 Tesseract-OCR 引擎

  • 图像预处理和文字提取

  • 中文语言包支持

5.4 屏幕选择器 (ScreenSelector.py)

职责: 屏幕区域选择界面

  • 提供可视化区域选择界面

  • 坐标和尺寸计算

  • 截图预览功能

5.5 图像对比工具 (imageCompare.py)

职责: 图像相似度计算

  • OpenCV 模板匹配算法

  • 相似度阈值判断

  • 实时图像对比

5.6 点击工具 (clickUtils.py)

职责: 鼠标点击操作

  • 跨平台鼠标点击实现

  • 点击坐标计算

  • 点击事件模拟

外部文件资源管理 (modules)

modules 目录结构

modules/
└── Tesseract-OCR/          # OCR 引擎完整环境
    ├── tesseract.exe       # 主程序
    ├── tessdata/            # 语言数据文件
    │   ├── eng.traineddata  # 英文语言包
    │   ├── chi_sim.traineddata  # 简体中文
    │   └── chi_tra.traineddata  # 繁体中文
    └── *.dll                # 依赖库文件

资源打包过程

  1. 开发环境: modules 目录作为外部资源存在,不直接打包到 exe

  2. 首次运行: ExternalFileManager 检测到 D 盘不存在 Tesseract-OCR 时自动解压

  3. 后续运行: 检测到已存在则跳过解压,直接使用现有资源

  4. 优势:

    • 减小 exe 文件体积(仅首次需要解压)

    • 支持资源更新(替换 modules 目录即可)

    • 提升启动速度(避免重复解压)

PyInstaller 打包配置

<mcfile name="setup.py" path="c:\Users\29790\Desktop\DYTeam\Project\ClickHtmlProject\setup.py"></mcfile> 中配置:

  • 隐藏导入: 确保 PyQt5、OpenCV、PIL 等库正确打包

  • 数据文件: HTML 模板、CSS、JavaScript 资源

  • Qt WebEngine: 特殊处理 WebEngine 资源文件

  • 外部工具: Tesseract-OCR 作为外部资源独立管理

项目特色

1. 混合架构设计

  • 前端: HTML5 + CSS3 + JavaScript 提供现代化 UI

  • 后端: Python 提供强大的图像处理和自动化能力

  • 通信: PyQt WebChannel 实现双向实时通信

2. 智能资源管理

  • 动态解压: 首次运行时自动解压所需资源

  • 缓存机制: 已解压资源重复使用,避免重复操作

  • 外部存储: 重要数据统一存放到 D 盘,便于管理

3. 模块化服务

  • 职责分离: 每个功能独立成服务模块

  • 统一接口: Service.py 提供统一的事件处理入口

  • 生命周期: 完善的服务启动/停止管理机制

4. 打包优化

  • 单文件发布: 可打包成独立 exe,无需安装依赖

  • 资源分离: 大体积资源外部管理,减小主程序体积

  • 环境兼容: 自动处理 Qt WebEngine 等复杂依赖

使用场景

本工具适用于需要自动化点击操作的各类场景:

  • 网页自动化: 定时点击、表单提交、数据采集

  • 游戏辅助: 自动点击、监控识别、定时任务

  • 办公自动化: 重复性点击操作、监控提醒

  • 测试工具: UI 自动化测试、功能验证

技术栈

  • GUI框架: PyQt5 + Qt WebEngine

  • 图像处理: OpenCV + PIL

  • 文字识别: Tesseract-OCR

  • 打包工具: PyInstaller

  • 前端技术: HTML5 + CSS3 + JavaScript

  • 通信机制: Qt WebChannel

项目结构总结

ClickHtmlProject/
├── main.py                      # 启动入口,环境配置
├── python/
│   ├── core/
│   │   └── htmlViewManager.py  # 主干程序,UI管理
│   ├── service/                # 功能服务层
│   │   ├── Service.py          # 事件总线
│   │   ├── imageService.py     # 图像处理
│   │   ├── TextService.py      # OCR文字识别
│   │   ├── SimilarService.py   # 相似度对比
│   │   └── TimeService.py      # 定时点击
│   ├── utils/                  # 工具模块
│   │   ├── ExternalFileManager.py  # 外部文件管理
│   │   ├── JsonDataManager.py  # 配置管理
│   │   ├── OCRProcessor.py     # OCR处理核心
│   │   ├── ScreenSelector.py   # 屏幕选择器
│   │   ├── imageCompare.py     # 图像对比
│   │   └── clickUtils.py       # 点击工具
│   └── config/                 # 配置文件
├── html/                       # 前端资源
│   ├── templates/              # HTML模板
│   ├── static/                 # CSS/JS资源
│   └── about.html              # 关于页面
└── modules/                    # 外部资源
    └── Tesseract-OCR/          # OCR引擎

通过这样的架构设计,项目实现了功能完整、易于维护、便于部署的自动化点击工具,既保证了开发效率,又确保了最终用户的使用体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值