Skip to content

微信窗口工具 - 获取微信窗口信息并实现定时自动发送消息的Windows桌面工具

License

Notifications You must be signed in to change notification settings

vag-Zhao/wechat-window-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信窗口工具 (WeChat Window Tool)

一个用于获取微信窗口信息并实现定时自动发送消息的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 或更高

快速开始

1. 克隆仓库

git clone https://github.com/vag-Zhao/wechat-window-tool.git
cd wechat-window-tool

2. 编译项目

方法一:使用构建脚本(推荐)

双击运行 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 .

3. 配置文件

编译完成后,在 build/bin/ 目录下创建配置文件:

  1. 复制示例配置文件

    cp config/time.example.txt build/bin/time.txt
    cp config/user.example.txt build/bin/user.txt
  2. 编辑 time.txt - 设置发送时间

    2025-12-25-08:00:00
    
  3. 编辑 user.txt - 设置发送目标和消息

    @好友昵称
    你好!这是一条定时消息。
    
    @另一个好友
    Hello!
    

4. 运行程序

  1. 确保微信已登录并运行
  2. 运行 WeChatWindowTool.exe
  3. 程序会在设定时间自动发送消息

首次配置

🔧 克隆仓库后必须完成以下配置步骤才能正常使用程序

配置文件说明

本项目使用两个配置文件来控制程序行为,这些文件包含个人信息,不会被提交到Git仓库

文件 用途 是否必需
time.txt 设置定时发送的目标时间 可选(不存在则立即发送)
user.txt 设置发送目标和消息内容 必需

配置步骤

  1. 进入程序目录

    cd build/bin/
  2. 创建用户配置文件```

  3. 创建时间配置文件(可选)

配置文件格式详解

user.txt 格式

@张三
你好,这是发送给张三的消息
这是第二行消息

@李四
你好,这是发送给李四的消息

注意事项:

  • 用户名必须与微信中显示的名称完全一致(可以是备注名或微信昵称)
  • @ 符号必须在行首
  • 消息可以是多行,直到遇到下一个 @用户名
  • 空行会被忽略

time.txt 格式

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             # 资源文件

配置说明

时间配置 (time.txt)

2025-12-25-08:00:00

注意事项:

  • 程序会在目标时间前1分钟开始准备
  • 请确保时间设置在当前时间之后
  • 建议提前几分钟启动程序

用户配置 (user.txt)

@用户名1
消息内容第一行
消息内容第二行

@用户名2
另一条消息

注意事项:

  • 用户名必须与微信中显示的名称完全一致
  • 可以使用备注名或微信昵称
  • 消息可以是多行
  • # 开头的行为注释

输出信息

程序运行后会在 output/ 目录生成 wechat_window_info.txt,包含:

  • 进程信息(PID、进程名)
  • 窗口句柄
  • 窗口坐标和大小
  • DPI缩放信息
  • 窗口状态
  • 第一个聊天好友位置信息

常见问题

Q: 程序无法找到微信窗口?

A: 请确保微信已登录并且主窗口可见或者是最小化到托盘,但是绝对不能点x让微信在后台!!!!会出问题!!!!。

Q: 时间不准确?

A: 程序使用NTP时间同步,请确保网络连接正常。

Q: 高DPI显示器下位置不准?

A: 程序已支持Per-Monitor DPI感知,如仍有问题请检查Windows显示设置。

技术细节

使用的Windows API

  • 进程枚举: 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.txttime.txt 包含个人信息,已在 .gitignore 中配置忽略
  • 请勿将包含真实用户名的配置文件提交到公开仓库
  • 建议在使用完毕后删除或清空配置文件中的敏感信息

运行环境

  • 程序需要微信PC客户端已登录并运行
  • 微信窗口不能最小化到托盘(需要可见)
  • 建议以管理员权限运行以获得最佳兼容性

免责声明

本工具仅供学习和研究Windows API使用,请勿用于任何违反微信使用条款或法律法规的用途。使用本工具所产生的任何后果由使用者自行承担。

许可证

MIT License

贡献

欢迎提交Issue和Pull Request!

更新日志

v1.0.0 (2024-12-22)

  • 初始版本发布
  • 支持窗口信息获取
  • 支持定时消息发送
  • 支持高DPI显示器
  • 支持NTP时间同步

About

微信窗口工具 - 获取微信窗口信息并实现定时自动发送消息的Windows桌面工具

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages