KeyPress/readme.md

263 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# KeyPressRemark
一个功能强大的Windows按键模拟工具支持向指定窗口发送按键和鼠标点击事件。本工具特别适用于游戏辅助、自动化测试、重复性操作等场景。
## 🚀 功能特性
- **精准窗口选择**:通过点击选择目标窗口,无需手动查找窗口句柄
- **多种发送模式**
- **PostMessage**:异步消息发送,适用于大多数应用
- **SendMessage**:同步消息发送,确保按键顺序
- **SendInput**:系统级输入模拟,兼容性最佳
- **自定义按键组合**支持10个可自定义的按键配置
- **自动循环功能**
- 空格键自动发送(可调节间隔)
- 鼠标左键自动点击(可调节间隔)
- **快捷键控制**F1开始/停止,方便操作
- **智能设置保存**:自动保存用户配置,下次启动自动恢复
## 📋 环境要求
- **操作系统**Windows 7/8/10/11
- **Python 版本**3.11+
- **权限要求**:管理员权限(程序会自动请求)
- **硬件要求**:无特殊要求
## 🛠️ 安装与运行
### 方式一:使用 uv推荐
uv 是一个快速的 Python 包管理器,安装速度比 pip 更快。
1. **安装 uv**
```bash
pip install uv
```
2. **克隆项目**
```bash
git clone <repository-url>
cd KeyPressRemark
```
3. **创建虚拟环境并安装依赖**
```bash
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. **运行程序**
```bash
python src/main.py
```
### 方式二:传统 pip 方式
1. **克隆项目**
```bash
git clone <repository-url>
cd KeyPressRemark
```
2. **创建虚拟环境**
```bash
python -m venv .venv
.venv\Scripts\activate
```
3. **安装依赖**
```bash
pip install -r requirements.txt
```
4. **运行程序**
```bash
python src/main.py
```
### 方式三:使用打包版本
从 [Releases](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. **安装打包工具**
```bash
uv add --dev pyinstaller
```
2. **打包为单个exe文件**
```bash
pyinstaller --noconsole --onefile --icon=resources/icons/aaa.ico src/main.py --name=KeyPressRemark
```
3. **打包为目录形式**(推荐,启动更快):
```bash
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](LICENSE) 文件。
## 👨‍💻 作者
**xiao liu**
## 📝 更新日志
### v0.1.0 (当前版本)
- ✨ 基础功能实现
- ✨ 支持三种按键发送模式
- ✨ 窗口选择功能
- ✨ 自定义按键配置
- ✨ 自动循环功能
- ✨ 设置保存和恢复
## 🔮 计划功能
- [ ] 按键序列录制和回放
- [ ] 更多快捷键支持
- [ ] 多窗口同时控制
- [ ] 定时任务功能
- [ ] 界面主题切换
---
如有问题或建议,欢迎提交 [Issue](issues) 或联系作者。