type
status
date
slug
summary
tags
category
icon
password

第一章 自动化部分

“最小可用 + 稍微稳一点”的封装,快速实现:
  • 点击、双击、右击、滚动、拖拽(鼠标操作)
  • 输入文本(含中文/表情/长文本优化)
  • 组合键
  • 等待窗口聚焦
  • 简单的防抖与异常处理。

一、安装依赖(最小)

(pyautogui 会自动拉 Pillow;pyperclip 用于剪贴板输入)

二、快速注意事项

事项
建议
Failsafe
若不想鼠标移到左上角就抛异常:pyautogui.FAILSAFE = False
默认暂停
去掉全局 0.1s 延迟:pyautogui.PAUSE = 0
坐标越界
先用 screenWidth, screenHeight = pyautogui.size() 检查
前台窗口
给浏览器聚焦,避免发到后台(win32gui.SetForegroundWindow(hwnd)
高 DPI
大多数情况下 pyautogui 已适配;若发现偏移,考虑 ctypes.windll.user32.SetProcessDPIAware()
中文/复杂字符
使用剪贴板粘贴比逐字发送更快更稳
特殊键
pyautogui.hotkey('ctrl','l')
延迟
大模型响应慢,可在点击前再判断鼠标是否需要移动(减少“可视跳动”)

三、封装一个简单驱动模块


四、典型使用场景示例

1. 直接点击模型返回坐标

2. 安全点击(带简单防抖)

3. 输入英文

4. 输入中文(自动走剪贴板)

5. 组合键

6. 打开网址

7. 拖拽 & 滚动


五、与你的大模型结合(伪代码)


六、常见坑与处理

问题
现象
处理
失焦
输入打到别的窗口
先调用 bring_window_to_front()
中文部分缺字
逐字方式丢失
用剪贴板法
偶尔点偏
模型坐标不匹配真实放缩
记录截图分辨率,做比例换算
项目卡顿
pyautogui 默认 pause
设置 PAUSE=0
弹窗挡住
点不到目标
模型或逻辑加“当前窗口层级检测”
连续误操作
循环内无状态判断
引入一个“当前是否允许点击”标志位
想撤销
没有紧急停止
加一个线程监听键盘(keyboard 库 或 pynput)

七、什么时候该换技术栈?

触发
建议
模型越来越快 → pyautogui move+click 成瓶颈
改用 SendInput(ctypes)
浏览器没获得焦点
增加 win32 窗口枚举聚焦
偶发误点高
加 UIA 验证(检查 ControlFromPoint)
输入法切换问题
统一用剪贴板粘贴
想游戏/DirectX 窗口自动化
必须 SendInput or 驱动级

八、下一步你可以加的“小功能”(按优先级)

  1. dry-run 模式:只打印动作,不执行。
  1. 动作日志:记录时间、坐标、语义、结果。
  1. 点击后局部截图保存(调试训练)。
  1. 黑名单区域过滤(如关闭按钮)。
  1. 双帧确认(模型→下一帧仍识别才执行)。

九、改进建议

1. 错误处理和日志

2. 配置文件支持

  • 将延时、坐标等参数外置到配置文件
  • 支持不同场景的参数配置

3. 图像识别集成

4. 操作录制和回放

  • 添加操作录制功能
  • 支持操作序列的保存和重放

5. 更强的窗口管理

6. 性能优化

  • 添加操作缓存机制
  • 支持批量操作优化
  • 异步操作支持

7. 安全性增强


第二章 引入视觉模型实现物体定位

iPad 使用 Rustdesk 远程控制排雷记录OKX Boost 交易活动交互策略
Loading...