Windows RPA 自动化
这个 skill 让 OpenClaw 能够直接操作 Windows 桌面,包括鼠标、键盘、窗口和应用程序。
核心能力
1. 鼠标操作
# 移动鼠标到坐标 (x, y)
desktop_mouse_move(x=500, y=300)
# 鼠标点击
desktop_mouse_click(x=500, y=300, button="left", clicks=1)
# 鼠标拖拽
desktop_mouse_drag(start_x=100, start_y=100, end_x=500, end_y=500)
# 鼠标滚轮
desktop_mouse_scroll(clicks=3) # 正数向上,负数向下
# 获取鼠标位置
desktop_mouse_position()
2. 键盘操作
# 输入文本
desktop_keyboard_type(text="Hello World")
# 按键
desktop_keyboard_press(key="enter")
desktop_keyboard_press(key="tab")
desktop_keyboard_press(key="escape")
# 组合键
desktop_keyboard_hotkey(keys=["ctrl", "c"]) # 复制
desktop_keyboard_hotkey(keys=["ctrl", "v"]) # 粘贴
desktop_keyboard_hotkey(keys=["ctrl", "a"]) # 全选
desktop_keyboard_hotkey(keys=["alt", "f4"]) # 关闭窗口
3. 屏幕操作
# 截取全屏
desktop_screenshot()
# 截取指定区域
desktop_screenshot(region={"x": 0, "y": 0, "width": 800, "height": 600})
# 获取屏幕尺寸
desktop_screen_size()
# 图像定位(在屏幕上找图)
desktop_locate_on_screen(image_path="button.png", confidence=0.9)
4. 窗口管理
# 列出所有窗口
desktop_window_list()
# 激活窗口
desktop_window_activate(title_pattern="记事本")
# 查找窗口
desktop_find_window(title_contains="Chrome")
# 点击窗口控件
desktop_click_window(
title_contains="记事本",
control_type="Edit",
action="set_text",
control_name="Hello"
)
5. 应用程序启动
# 启动常用应用(支持别名)
desktop_launch_app(app_name="notepad")
desktop_launch_app(app_name="chrome")
desktop_launch_app(app_name="excel")
desktop_launch_app(app_name="word")
# 启动自定义程序
desktop_launch_app(app_name="C:\\Program Files\\MyApp\\app.exe")
# 带参数启动
desktop_launch_app(app_name="chrome", args="--incognito")
6. Shell 命令
# PowerShell 命令
desktop_shell(command="Get-Process | Select-Object -First 5")
# CMD 命令
desktop_shell(command="dir C:\\", shell_type="cmd")
7. 剪贴板
# 获取剪贴板内容
desktop_clipboard_get()
# 设置剪贴板内容
desktop_clipboard_set(text="要复制的内容")
8. 桌面状态
# 获取完整桌面状态(鼠标位置、活动窗口、截图等)
desktop_get_state(capture_screenshot=True)
# 检查环境
desktop_check()
使用示例
示例 1: 自动填写表单
# 1. 启动应用程序
desktop_launch_app(app_name="notepad")
# 2. 等待窗口出现
time.sleep(1)
# 3. 输入内容
desktop_keyboard_type(text="这是一段自动输入的文字")
# 4. 保存文件
desktop_keyboard_hotkey(keys=["ctrl", "s"])
desktop_keyboard_type(text="auto_saved.txt")
desktop_keyboard_press(key="enter")
示例 2: 图像识别点击
# 1. 先截图保存按钮图像
desktop_screenshot(save_path="screen.png")
# 2. 用户手动截取按钮区域保存为 button.png
# 3. 在屏幕上定位并点击
result = desktop_locate_on_screen(image_path="button.png", confidence=0.9)
# 如果找到,会返回中心坐标,然后点击
示例 3: 操作特定窗口
# 1. 查找目标窗口
windows = desktop_find_window(title_contains="计算器")
# 2. 激活窗口
desktop_window_activate(title_pattern="计算器")
# 3. 点击窗口中的按钮
desktop_click_window(
title_contains="计算器",
control_type="Button",
control_name="1"
)
安全注意事项
权限要求
本技能需要以下系统权限:
- 屏幕捕获: 用于截图功能
- 键盘输入: 用于文本输入和快捷键
- 鼠标输入: 用于点击、移动等操作
- 剪贴板访问: 用于读写剪贴板
- Shell 执行: 用于运行命令(可选)
敏感操作
以下操作建议开启用户确认:
desktop_shell- 执行任意 Shell 命令desktop_clipboard_get- 读取剪贴板(可能包含敏感信息)desktop_screenshot- 屏幕截图(可能包含隐私内容)
用户批准机制
建议在 OpenClaw 配置中启用审批模式:
- 敏感操作执行前会请求用户确认
- 用户可以选择批准、拒绝或修改参数
- 可设置白名单跳过审批
沙箱支持
- 建议在不包含敏感数据的测试环境中首次运行
- Shell 命令可在受限环境中执行
- 截图功能可限制截取区域
安全最佳实践
- 审批模式: 建议开启命令审批,每次执行前确认
- 坐标依赖: 屏幕坐标可能因分辨率不同而变化,优先使用图像识别
- 窗口标题: 使用模糊匹配而非精确匹配,提高鲁棒性
- 超时处理: 复杂操作应设置合理的等待时间
- 最小权限: 仅请求必要的权限,避免过度授权
后端选择
系统支持两种后端:
- pyautogui (默认): 纯坐标操作,简单可靠
- pywinauto (备用): Windows UI Automation,支持控件级操作
切换后端:
desktop_set_backend(backend="pywinauto")
错误处理
所有操作返回 JSON 格式结果:
{
"status": "ok", // 或 "error"
"message": "操作描述",
// 其他字段...
}
建议检查 status 字段确认操作是否成功。
常见问题
Q: 为什么鼠标移动不准确?
A: 可能是分辨率缩放问题,尝试使用 desktop_screen_size() 检查实际分辨率。
Q: 图像识别找不到目标?
A: 降低 confidence 参数值,或确保图像与屏幕显示一致。
Q: 中文输入乱码? A: 确保系统编码正确,或使用剪贴板方式输入。
Q: pywinauto 无法找到控件? A: 部分应用使用自定义 UI,无法被 UI Automation 识别,改用坐标或图像方式。