分享一套 Python 编写的多窗口鼠标同步点击器源码:在主窗口点击鼠标时,同时向其它几个窗口后台发送点击消息,最多支持 4 个窗口,典型用途就是网游四开时同步操作四个号。它的关键点在于用 PostMessage 投递消息,不会抢走窗口焦点,所以四个窗口可以并排同时响应。
效果预览

功能特性
- 四窗口同步:最多配置 4 个窗口,主窗口点击时同步到其余已启用的窗口;
- 后台点击不抢焦点:通过
PostMessage发送WM_LBUTTONDOWN / WM_LBUTTONUP,目标窗口不需要被激活; - 支持像素偏移:每个窗口可单独设置 X / Y 偏移,适配窗口位置不一致的情况;
- 可视化配置:tkinter 图形界面,下拉框直接选择当前打开的窗口;
- 运行日志:实时输出每一步的点击坐标与发送结果,方便排查。
运行环境与依赖
- Windows 系统(依赖
win32gui/win32api等 Windows API); - Python 3.x;
- 两个第三方库:
pywin32与pynput。
pip install pywin32 pynput
使用步骤
- 安装依赖:
pip install pywin32 pynput; - 运行脚本,弹出「多窗口同步点击模拟器」窗口;
- 点击刷新窗口列表,拉取当前所有可见窗口;
- 在 4 行配置里分别选择窗口、填写 X / Y 偏移,并勾选启用;
- 点击启动监听,此后在第一个启用的窗口中点击鼠标,其余窗口会同步收到点击;
- 用完后点停止监听(关闭窗口也会自动停止)。
实现原理:为什么“不抢焦点”
常规模拟点击会调用 SetForegroundWindow 把目标窗口切到前台,导致窗口之间来回抢焦点、根本没法多开。这里的做法是:
- 用
win32gui.GetWindowRect(hwnd)拿到目标窗口位置,把屏幕坐标换算成该窗口的客户区坐标; - 用
win32api.MAKELONG(x, y)打包成lParam; - 用
win32gui.PostMessage()直接向窗口消息队列投递WM_LBUTTONDOWN和WM_LBUTTONUP(中间隔 20ms 模拟按下再抬起)。
消息是“投递”进去的,窗口不需要被激活,因此四个窗口可以并排同时响应。另外代码里用 is_simulating 标志位过滤掉自己发出的模拟事件,避免递归触发。
完整源码
注意事项
- 仅支持 Windows,且必须安装
pywin32与pynput,缺任一个都会弹窗提示; - 偏移量单位是像素,按实际窗口摆放位置调整,填错会导致点击位置偏移;
- 部分程序(尤其是 DirectX 全屏游戏)可能不响应
PostMessage投递的消息,此时同步无效,属正常现象; - 合规风险提醒:在网游中使用同步点击类工具,可能违反游戏的用户协议,存在封号风险。本文定位于 Python 自动化与 Windows 消息机制的学习研究,是否使用及由此产生的后果由使用者自行承担;
- 本工具为开源 Python 源码,可自行审计代码,相比来源不明的 exe 更安全;运行前建议用杀毒软件扫描一遍。
常见问题
点击没同步到其他窗口?
先确认目标行已勾选启用且选择了窗口;再看该程序是否响应 PostMessage——部分全屏游戏会忽略后台消息,这种情况属正常现象。
提示缺少依赖库怎么办?
按提示执行 pip install pywin32 pynput 后重新运行即可。
同步位置总是偏?
调整对应窗口的 X / Y 偏移量,它表示相对点击位置的横纵偏移像素数。
最多只能四个窗口吗?
当前版本界面固定 4 行配置。需要更多可自行扩展代码里 for row in range(4) 的循环次数。








暂无评论内容