一个用于获取微信窗口信息并实现定时自动发送消息的Windows桌面工具。
⚠️ 重要提示: 首次使用前请阅读下方的首次配置部分,了解如何设置配置文件。
- 窗口信息获取: 获取微信主窗口句柄、坐标、大小等信息
- DPI感知: 支持高DPI显示器,自动适配不同缩放比例
- 窗口激活: 将微信窗口激活并置于前台
- UI元素检测: 检测聊天列表、第一个聊天好友位置等UI元素
- 定时发送: 支持设定时间自动发送消息给指定好友
- NTP时间同步: 使用网络时间协议确保时间精确
- 使用Windows API进行窗口操作
- PrintWindow截图技术,支持硬件加速窗口
- 模板匹配验证聊天项位置
- 支持Per-Monitor DPI感知
- 操作系统: Windows 10 1703+ (推荐) 或 Windows 11
- 编译器:
- Visual Studio 2019/2022 (推荐)
- MinGW-w64
- CMake: 3.15 或更高版本
- Windows SDK: 10.0.17763.0 或更高
git clone https://github.com/vag-Zhao/wechat-window-tool.git
cd wechat-window-tool方法一:使用构建脚本(推荐)
双击运行 build.bat,脚本会自动检测编译器并编译项目。
方法二:手动编译
# 创建构建目录
mkdir build
cd build
# 使用Visual Studio
cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config Release
# 或使用MinGW
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
cmake --build .编译完成后,在 build/bin/ 目录下创建配置文件:
-
复制示例配置文件
cp config/time.example.txt build/bin/time.txt cp config/user.example.txt build/bin/user.txt
-
编辑
time.txt- 设置发送时间2025-12-25-08:00:00 -
编辑
user.txt- 设置发送目标和消息@好友昵称 你好!这是一条定时消息。 @另一个好友 Hello!
- 确保微信已登录并运行
- 运行
WeChatWindowTool.exe - 程序会在设定时间自动发送消息
🔧 克隆仓库后必须完成以下配置步骤才能正常使用程序
本项目使用两个配置文件来控制程序行为,这些文件包含个人信息,不会被提交到Git仓库:
| 文件 | 用途 | 是否必需 |
|---|---|---|
time.txt |
设置定时发送的目标时间 | 可选(不存在则立即发送) |
user.txt |
设置发送目标和消息内容 | 必需 |
-
进入程序目录
cd build/bin/ -
创建用户配置文件```
-
创建时间配置文件(可选)
@张三
你好,这是发送给张三的消息
这是第二行消息
@李四
你好,这是发送给李四的消息
注意事项:
- 用户名必须与微信中显示的名称完全一致(可以是备注名或微信昵称)
@符号必须在行首- 消息可以是多行,直到遇到下一个
@用户名 - 空行会被忽略
2025-12-25-08:00:00
注意事项:
- 时间为本地时间(北京时间)
- 程序会在目标时间前1分钟开始准备
- 如果不创建此文件或文件为空,程序将立即发送消息
wechat_window_tool/
├── CMakeLists.txt # CMake构建配置
├── build.bat # Windows构建脚本
├── README.md # 项目说明文档
├── .gitignore # Git忽略文件
├── assets/
│ └── ico.ico # 程序图标
├── config/
│ ├── time.example.txt # 时间配置示例
│ └── user.example.txt # 用户配置示例
└── src/
├── main.cpp # 程序入口
├── process_helper.h/cpp # 进程枚举
├── window_helper.h/cpp # 窗口操作
├── dpi_helper.h/cpp # DPI处理
├── output_helper.h/cpp # 输出处理
├── wechat_ui_helper.h/cpp # 微信UI检测
├── automation_helper.h/cpp # 自动化操作
├── ntp_helper.h/cpp # NTP时间同步
├── window_layout_helper.h/cpp # 窗口布局
├── time_scheduler.h/cpp # 定时调度
├── countdown_dialog.h/cpp # 倒计时对话框
└── resource.rc # 资源文件
2025-12-25-08:00:00
注意事项:
- 程序会在目标时间前1分钟开始准备
- 请确保时间设置在当前时间之后
- 建议提前几分钟启动程序
@用户名1
消息内容第一行
消息内容第二行
@用户名2
另一条消息
注意事项:
- 用户名必须与微信中显示的名称完全一致
- 可以使用备注名或微信昵称
- 消息可以是多行
- 以
#开头的行为注释
程序运行后会在 output/ 目录生成 wechat_window_info.txt,包含:
- 进程信息(PID、进程名)
- 窗口句柄
- 窗口坐标和大小
- DPI缩放信息
- 窗口状态
- 第一个聊天好友位置信息
A: 请确保微信已登录并且主窗口可见或者是最小化到托盘,但是绝对不能点x让微信在后台!!!!会出问题!!!!。
A: 程序使用NTP时间同步,请确保网络连接正常。
A: 程序已支持Per-Monitor DPI感知,如仍有问题请检查Windows显示设置。
- 进程枚举:
CreateToolhelp32Snapshot,Process32First/Next - 窗口操作:
EnumWindows,GetWindowRect,SetForegroundWindow - DPI处理:
SetProcessDpiAwarenessContext,GetDpiForWindow - 截图:
PrintWindow,BitBlt - 输入模拟:
SendInput,keybd_event
- user32.lib
- kernel32.lib
- Shcore.lib
- advapi32.lib
- ws2_32.lib
user.txt和time.txt包含个人信息,已在.gitignore中配置忽略- 请勿将包含真实用户名的配置文件提交到公开仓库
- 建议在使用完毕后删除或清空配置文件中的敏感信息
- 程序需要微信PC客户端已登录并运行
- 微信窗口不能最小化到托盘(需要可见)
- 建议以管理员权限运行以获得最佳兼容性
本工具仅供学习和研究Windows API使用,请勿用于任何违反微信使用条款或法律法规的用途。使用本工具所产生的任何后果由使用者自行承担。
MIT License
欢迎提交Issue和Pull Request!
- 初始版本发布
- 支持窗口信息获取
- 支持定时消息发送
- 支持高DPI显示器
- 支持NTP时间同步