SkillHub

windows-rpa

v1.0.1

Windows 桌面 RPA 自动化控制。使用场景: (1) 操作桌面应用程序(非 Web 应用) (2) 模拟鼠标键盘操作 (3) 截图和图像识别 (4) 窗口管理和应用启动 (5) 剪贴板操作 (6) Shell 命令执行 NOT for: Web 应用操作(请使用 browser 工具)、Linux/Mac 系统

Sourced from ClawHub, Authored by qgyz9613

Installation

Please help me install the skill `windows-rpa` from SkillHub official store. npx skills add qgyz9613/windows-rpa

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 配置中启用审批模式: 1. 敏感操作执行前会请求用户确认 2. 用户可以选择批准、拒绝或修改参数 3. 可设置白名单跳过审批

沙箱支持

  • 建议在不包含敏感数据的测试环境中首次运行
  • Shell 命令可在受限环境中执行
  • 截图功能可限制截取区域

安全最佳实践

  1. 审批模式: 建议开启命令审批,每次执行前确认
  2. 坐标依赖: 屏幕坐标可能因分辨率不同而变化,优先使用图像识别
  3. 窗口标题: 使用模糊匹配而非精确匹配,提高鲁棒性
  4. 超时处理: 复杂操作应设置合理的等待时间
  5. 最小权限: 仅请求必要的权限,避免过度授权

后端选择

系统支持两种后端:

  • 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 识别,改用坐标或图像方式。