海豚の小窝
首页星文章杂谈关系关于工具箱
海豚
言

海豚 & 言

2026

封面

微信多聊——我做了一个微信多开聊天工具

2026-07-12
# 杂谈
# 开发
# 微信

事情是这样的,我需要同时和很多人聊天,但是微信PC版一次只能看一个聊天窗口,切来切去太烦了。于是我就想,能不能做一个工具,把多个聊天窗口并排显示?

起因

微信PC版的设计是单窗口模式,每次只能看一个聊天。如果你需要同时和5个人聊天,就得不停地切换窗口,效率很低。

我想要的是类似Telegram Desktop那样的多窗口布局——左边是联系人列表,右边可以同时打开多个聊天窗口,并排显示。

技术方案

wxhelper框架

核心是用了一个叫wxhelper的开源项目,它通过DLL注入的方式,给微信PC版加了一个HTTP API。这样就可以用程序控制微信了。

主要功能:

  • 获取联系人列表
  • 收发消息
  • 下载图片/文件
  • 获取群成员信息

Python + tkinter

界面用Python的tkinter做的,原因很简单:

  1. 不想做成网页版(太重了)
  2. tkinter是Python自带的,不需要额外安装
  3. 可以打包成单个exe,双击就能用

架构设计

微信多聊/
├── app.py              # 主程序(tkinter GUI)
├── src/_internal/
│   └── wxhelper/
│       ├── wxhelper.dll    # 注入的DLL
│       ├── start-wechat.exe # 启动注入工具
│       └── config.ini      # 端口配置
└── pins.json           # 窗口布局持久化

核心架构:

  • HTTP API:通过requests调用wxhelper的API
  • TCP回调:wxhelper通过TCP推送新消息
  • 消息队列:用threading.Lock保护的消息队列,桥接TCP回调和GUI线程
  • 脏标记刷新:只有数据变化时才更新UI,避免无意义的重绘

UI设计

极简线条风格

最开始做了几个版本,有气泡风格、玻璃拟态风格,但都被否决了。最后选了Telegram那种极简线条风格:

  • 深色背景(#111111)
  • 消息用2px竖线区分自己/对方
  • 自己的消息右对齐,橙色竖线
  • 对方的消息左对齐,蓝色竖线
  • 没有气泡、没有头像、没有多余装饰

2×8网格布局

右边是2行×8列=16个聊天窗口,每个窗口独立:

  • 头部:联系人名字 + 关闭按钮
  • 消息区:可滚动的消息列表
  • 输入框:输入消息 + 发送按钮

左边是联系人列表,点击就可以把联系人分配到空闲的窗口槽位。

踩坑记录

1. 端口冲突

wxhelper注入后会在某个端口开启HTTP服务。但如果之前的注入没有正确退出,端口会被占用,新的注入就会失败。

解决:改用不同的端口(19001→19002→19003→19004...),或者等僵尸进程超时释放。

2. SQL查询超时

用SQL查询联系人表(SELECT * FROM Contact)会超时,因为联系人太多了(7000+)。

解决:改用get_contacts API(type=46),速度快很多。

3. UI刷新卡顿

每次收到消息都重建整个联系人列表,导致UI闪烁卡顿。

解决:

  • 联系人列表虚拟化(只渲染可见区域)
  • 消息气泡增量追加(不重建)
  • 轮询间隔从600ms增加到2000ms

4. 消息显示为代码

手机发的消息有时候会显示成XML代码,因为某些消息类型没有正确处理。

解决:检测content是否包含XML标签,如果是就显示为[消息]占位符。

打包发布

用PyInstaller打包成单个exe文件:

pyinstaller --clean 微信多聊.spec

最终产物是一个35MB的exe,双击就能用。内部包含了:

  • Python运行时
  • wxhelper工具链
  • 所有依赖库

目前的功能

  • ✅ 16个聊天窗口并排显示
  • ✅ 消息实时同步(2秒轮询)
  • ✅ 联系人列表(100人,虚拟滚动)
  • ✅ 支持文字、图片、表情、视频、语音消息
  • ✅ 窗口布局持久化(pins.json)
  • ✅ 极简深色UI

后续计划

  • 群聊支持
  • 消息搜索
  • 文件发送
  • 表情包发送
  • 置顶聊天

最后

这个工具主要是给自己用的,解决自己同时和多人聊天的需求。代码写得比较粗糙,但基本功能都能用。

如果你也有类似需求,可以参考这个思路自己做一个。核心就是wxhelper + Python GUI,技术门槛不高。


写于2026年7月12日,by 海豚

avatar

海豚

只是一个普通人

2026年7月

一
二
三
四
五
六
日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Recent Records

小更新:渐变色和头像

2026-07-13

博客大更新

2026-07-12

最近很焦虑

2026-07-12