按键精灵
Go to file
v_liufushun b9c2a31a5a 项目重构 2025-10-22 17:26:03 +08:00
dist first 2025-06-04 11:33:17 +08:00
docs 项目重构 2025-10-22 17:26:03 +08:00
resources 项目重构 2025-10-22 17:26:03 +08:00
src 项目重构 2025-10-22 17:26:03 +08:00
.gitignore first 2025-06-04 11:33:17 +08:00
main.spec first 2025-06-04 11:33:17 +08:00
pyproject.toml 项目重构 2025-10-22 17:26:03 +08:00
readme.md 项目重构 2025-10-22 17:26:03 +08:00
requirements.txt 项目重构 2025-10-22 17:26:03 +08:00
uv.lock 项目重构 2025-10-22 17:26:03 +08:00

readme.md

KeyPressRemark

一个功能强大的Windows按键模拟工具支持向指定窗口发送按键和鼠标点击事件。本工具特别适用于游戏辅助、自动化测试、重复性操作等场景。

🚀 功能特性

  • 精准窗口选择:通过点击选择目标窗口,无需手动查找窗口句柄
  • 多种发送模式
    • PostMessage:异步消息发送,适用于大多数应用
    • SendMessage:同步消息发送,确保按键顺序
    • SendInput:系统级输入模拟,兼容性最佳
  • 自定义按键组合支持10个可自定义的按键配置
  • 自动循环功能
    • 空格键自动发送(可调节间隔)
    • 鼠标左键自动点击(可调节间隔)
  • 快捷键控制F1开始/停止,方便操作
  • 智能设置保存:自动保存用户配置,下次启动自动恢复

📋 环境要求

  • 操作系统Windows 7/8/10/11
  • Python 版本3.11+
  • 权限要求:管理员权限(程序会自动请求)
  • 硬件要求:无特殊要求

🛠️ 安装与运行

方式一:使用 uv推荐

uv 是一个快速的 Python 包管理器,安装速度比 pip 更快。

  1. 安装 uv

    pip install uv
    
  2. 克隆项目

    git clone <repository-url>
    cd KeyPressRemark
    
  3. 创建虚拟环境并安装依赖

    uv venv --python 3.11
    # Windows
    .venv\Scripts\activate
    # 或者直接使用 uv pip 安装
    uv pip install PyQt5==5.15.11 pyqt5-qt5==5.15.2 pywin32==311
    
  4. 运行程序

    python src/main.py
    

方式二:传统 pip 方式

  1. 克隆项目

    git clone <repository-url>
    cd KeyPressRemark
    
  2. 创建虚拟环境

    python -m venv .venv
    .venv\Scripts\activate
    
  3. 安装依赖

    pip install -r requirements.txt
    
  4. 运行程序

    python src/main.py
    

方式三:使用打包版本

Releases 下载预编译的 exe 文件,双击运行即可。

📖 使用指南

基本操作

  1. 选择目标窗口

    • 点击"选择窗口"按钮
    • 鼠标变为十字形后,点击要控制的窗口
    • 成功选择后会显示窗口标题和进程信息
  2. 配置按键

    • 在"自定义按键"区域,为每个按钮选择对应的按键
    • 支持字母、数字、功能键等
  3. 选择发送模式

    • PostMessage:适用于大多数游戏和应用
    • SendMessage:适用于需要同步响应的应用
    • SendInput:适用于对按键检测严格的应用
  4. 开始使用

    • 配置完成后,直接点击按键按钮发送
    • 或按 F1 开始自动循环功能

高级功能

自动循环

  • 空格键循环:勾选后自动按设定间隔发送空格键
  • 鼠标点击循环:勾选后自动按设定间隔点击鼠标左键
  • 间隔设置支持毫秒级精度最小间隔10ms

快捷键控制

  • F1:开始/停止自动循环功能
  • ESC:紧急停止所有自动功能

🏗️ 项目结构

KeyPressRemark/
├── src/                        # 源代码目录
│   ├── main.py                 # 程序入口点
│   ├── core/                   # 核心功能模块
│   │   ├── admin_check.py      # 管理员权限检查和申请
│   │   ├── constants.py        # 常量定义(按键码、消息常量等)
│   │   ├── key_sender.py       # 按键发送核心逻辑
│   │   └── window_selector.py  # 窗口选择功能实现
│   ├── gui/                    # 图形用户界面模块
│   │   ├── main_window.py      # 主窗口界面和逻辑
│   │   ├── about_dialog.py     # 关于对话框
│   │   └── components/         # 可复用UI组件
│   └── utils/                  # 工具和辅助模块
│       ├── settings.py         # 设置管理(保存/加载配置)
│       └── structures.py       # Windows API结构体定义
├── resources/                  # 资源文件目录
│   ├── icons/                  # 应用图标
│   ├── images/                 # 图片资源
│   └── qrc/                    # Qt资源文件
├── tests/                      # 单元测试文件
├── docs/                       # 项目文档
├── dist/                       # 打包输出目录
├── pyproject.toml             # 项目配置文件
├── requirements.txt           # 依赖列表
└── README.md                  # 项目说明文档

🔧 开发说明

核心模块详解

core/key_sender.py

负责实际的按键和鼠标事件发送,实现了三种不同的发送模式:

  • PostMessage模式:异步发送,性能最佳
  • SendMessage模式:同步发送,响应可靠
  • SendInput模式:系统级模拟,兼容性最好

core/window_selector.py

实现窗口选择功能,通过鼠标点击获取目标窗口句柄。

gui/main_window.py

主界面实现包含所有UI组件和事件处理逻辑。

utils/settings.py

配置管理模块,自动保存和恢复用户设置。

依赖说明

本项目主要依赖以下库:

  • PyQt5 (5.15.11)GUI框架

    • 用于创建图形用户界面
    • 提供丰富的UI组件和事件处理
  • pyqt5-qt5 (5.15.2)Qt5运行时库

    • 注意Windows平台需要使用5.15.2版本
    • 新版本5.15.17不支持Windows平台
  • pywin32 (311)Windows API封装

    • 提供Python访问Windows API的能力
    • 用于窗口操作、消息发送等系统级功能

依赖版本说明

⚠️ 重要提示本项目在Windows平台上有特定的依赖版本要求

  • pyqt5-qt5 必须使用 5.15.2 版本
  • 不能使用最新的 5.15.17 版本因为该版本不提供Windows平台的wheel文件
  • 如果遇到依赖安装问题,请使用 uv pip install 而不是 uv add

📦 打包部署

使用 PyInstaller 打包

  1. 安装打包工具

    uv add --dev pyinstaller
    
  2. 打包为单个exe文件

    pyinstaller --noconsole --onefile --icon=resources/icons/aaa.ico src/main.py --name=KeyPressRemark
    
  3. 打包为目录形式(推荐,启动更快):

    pyinstaller --noconsole --icon=resources/icons/aaa.ico src/main.py --name=KeyPressRemark
    

打包选项说明

  • --noconsole:不显示控制台窗口
  • --onefile打包为单个exe文件
  • --icon:设置应用图标
  • --name:设置输出文件名

⚠️ 注意事项

  1. 管理员权限:程序需要管理员权限才能向其他应用发送按键
  2. 杀毒软件:部分杀毒软件可能将按键模拟程序误报为恶意软件
  3. 兼容性:不同应用对按键模拟的支持程度不同,建议测试不同的发送模式
  4. 性能:高频率按键发送可能影响系统性能,建议合理设置间隔时间

🤝 贡献指南

欢迎提交Issue和Pull Request

  1. Fork本项目
  2. 创建feature分支git checkout -b feature/new-feature
  3. 提交更改:git commit -am 'Add new feature'
  4. 推送分支:git push origin feature/new-feature
  5. 提交Pull Request

📄 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。

👨‍💻 作者

xiao liu

📝 更新日志

v0.1.0 (当前版本)

  • 基础功能实现
  • 支持三种按键发送模式
  • 窗口选择功能
  • 自定义按键配置
  • 自动循环功能
  • 设置保存和恢复

🔮 计划功能

  • 按键序列录制和回放
  • 更多快捷键支持
  • 多窗口同时控制
  • 定时任务功能
  • 界面主题切换

如有问题或建议,欢迎提交 Issue 或联系作者。