360 Secure SkillHub
360 安全技能中心

Windows应用控制器

这是一款Windows桌面应用自动化工具,依托PyAutoGUI、pywin32等Python库,实现应用启停、键鼠控制、图像识别定位、窗口控制、截图等核心功能。适用于GUI自动化测试、批量数据录入、重复性桌面操作等场景。用户可通过脚本或指令触发操作,输出含执行状态、步骤的报告,可附带截图验证结果。

534422530
534422530
热度 30.81
最近更新 2026-05-11 17:46:21
分类:自动化依赖:代码执行 / 读写文件应用场景:自动化脚本 / 数据处理 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add laosi-windows-controller
Metadata
name
windows-app-controller
description
Windows应用控制器 - 原创技能。让AI通过自动化技术控制Windows应用程序,包括打开/关闭应用、点击按钮、填写表单、截取屏幕等操作。适用于GUI自动化、测试、数据录入等场景。
metadata
{"openclaw":{"requires":{"bins":["python"],"python":["pyautogui","pywin32","psutil"]},"install":[]}}
tags
["windows","automation","gui","desktop","control","pyautogui"]
version
1.0.0
author
laosi
source
original

⚠️ 发布规则

所有发布到ClawHub的技能必须严格测试,确定没有问题再发布


技能测试验证清单

  • frontmatter格式正确
  • 功能覆盖完整
  • 命令语法清晰
  • 安全机制完善
  • 无语法错误

Windows App Controller - Windows应用控制器

原创技能 | 激活词: 控制应用 / 自动化Windows / GUI操作

功能概述

通过Python自动化库控制Windows桌面应用程序:

功能 库 说明
图像识别 PyAutoGUI 识别按钮/元素位置
鼠标控制 PyAutoGUI 点击、双击、拖拽
键盘控制 PyAutoGUI 输入文字、快捷键
窗口控制 Win32gui 最大化、最小化、切换
进程控制 Psutil 启动、关闭、监控进程

安装依赖

pip install pyautogui pywin32 psutil pillow

核心命令

1. 应用启动与关闭

# 启动应用
def launch_app(app_path: str) -> bool:
    """
    启动Windows应用程序
    示例: launch_app("notepad.exe")
    示例: launch_app("C:\\Program Files\\App\\app.exe")
    """
    import subprocess
    subprocess.Popen(app_path)
    return True

# 关闭应用
def close_app(process_name: str) -> bool:
    """
    关闭应用程序
    示例: close_app("notepad.exe")
    """
    import os
    os.system(f"taskkill /F /IM {process_name}")
    return True

# 检查进程是否运行
def is_app_running(process_name: str) -> bool:
    import psutil
    for proc in psutil.process_iter():
        if proc.name() == process_name:
            return True
    return False

2. 鼠标操作

import pyautogui

# 点击
pyautogui.click(x, y)           # 单击
pyautogui.doubleClick(x, y)     # 双击
pyautogui.rightClick(x, y)      # 右键

# 移动
pyautogui.moveTo(x, y)          # 移动到
pyautogui.move(x_offset, y_offset)  # 相对移动

# 拖拽
pyautogui.dragTo(x, y, duration=1)   # 拖拽到
pyautogui.drag(x_offset, y_offset)   # 相对拖拽

# 滚动
pyautogui.scroll(clicks, x, y)  # 滚动

3. 键盘操作

import pyautogui

# 输入文字
pyautogui.write("Hello World", interval=0.1)

# 按键
pyautogui.press("enter")       # 按一次
pyautogui.keyDown("ctrl")       # 按下
pyautogui.keyUp("ctrl")         # 释放

# 组合键
pyautogui.hotkey("ctrl", "c")   # Ctrl+C
pyautogui.hotkey("ctrl", "v")   # Ctrl+V
pyautogui.hotkey("alt", "f4")   # Alt+F4

# 特殊键
pyautogui.press("tab")
pyautogui.press("esc")
pyautogui.press("delete")
pyautogui.press("home")
pyautogui.press("end")

4. 图像识别定位

import pyautogui

# 查找图像位置
position = pyautogui.locateOnScreen("button.png")
if position:
    x, y = pyautogui.center(position)
    pyautogui.click(x, y)

# 查找所有匹配
positions = pyautogui.locateAllOnScreen("button.png")

# 带置信度查找
position = pyautogui.locateOnScreen("button.png", confidence=0.9)

5. 窗口控制

import win32gui
import win32con

# 获取窗口句柄
hwnd = win32gui.FindWindow(None, "窗口标题")

# 窗口操作
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)  # 最大化
win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)  # 最小化
win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)   # 恢复

# 获取窗口位置
left, top, right, bottom = win32gui.GetWindowRect(hwnd)

# 设置窗口位置
win32gui.SetWindowPos(hwnd, None, 0, 0, 800, 600, 0)

# 激活窗口
win32gui.SetForegroundWindow(hwnd)

6. 截图功能

import pyautogui

# 全屏截图
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")

# 区域截图
region_screenshot = pyautogui.screenshot(region=(0, 0, 800, 600))
region_screenshot.save("region.png")

# 保存到剪贴板
pyautogui.screenshot().save_to_clipboard()

使用流程

1. 分析目标应用界面
2. 确定要操作的位置 (图像/坐标)
3. 编写自动化脚本
4. 测试执行
5. 调整优化

实用示例

示例1: 自动打开记事本并输入文字

# 1. 启动记事本
launch_app("notepad.exe")
time.sleep(1)  # 等待启动

# 2. 输入文字
pyautogui.write("Hello from AI!", interval=0.1)

# 3. 保存文件
pyautogui.hotkey("ctrl", "s")  # 打开保存对话框
time.sleep(0.5)
pyautogui.write("ai_created.txt")
pyautogui.press("enter")

示例2: 自动点击按钮

# 1. 确保目标在屏幕上
# 2. 找到按钮位置
button_pos = pyautogui.locateOnScreen("submit_button.png")
if button_pos:
    center = pyautogui.center(button_pos)
    pyautogui.click(center)
else:
    print("按钮未找到!")

示例3: 自动填表

# 1. 点击第一个输入框
pyautogui.click(100, 200)
pyautogui.write("张三")

# 2. Tab到下一个
pyautogui.press("tab")
pyautogui.write("zhangsan@example.com")

# 3. Tab到下一个
pyautogui.press("tab")
pyautogui.write("1234567890")

# 4. 点击提交
pyautogui.click(submit_pos)

示例4: 自动化测试

def test_app():
    # 启动应用
    launch_app("test_app.exe")
    time.sleep(2)
    
    # 测试各个按钮
    buttons = ["btn_login.png", "btn_submit.png", "btn_cancel.png"]
    for btn in buttons:
        pos = pyautogui.locateOnScreen(btn)
        if pos:
            pyautogui.click(pyautogui.center(pos))
            time.sleep(0.5)
    
    # 截图记录
    pyautogui.screenshot().save(f"test_result_{time.time()}.png")
    
    # 关闭应用
    close_app("test_app.exe")

注意事项

安全设置

# 启用故障安全 (鼠标到角落会停止)
pyautogui.FAILSAFE = True

# 设置默认暂停
pyautogui.PAUSE = 0.5

# 设置速度
pyautogui.MINIMUM_DURATION = 0.1

常见问题

问题 解决方案
图像识别失败 截图保存为模板,确保清晰度
点击位置不准 使用图像识别而非固定坐标
应用未响应 增加等待时间
多显示器问题 确保目标在主显示器上

可靠性建议

  1. 始终使用图像识别 - 比坐标更可靠
  2. 添加等待时间 - 应用启动需要时间
  3. 异常处理 - 捕获并处理错误
  4. 截图验证 - 执行后截图确认
try:
    pos = pyautogui.locateOnScreen("target.png", confidence=0.8)
    if pos:
        pyautogui.click(pyautogui.center(pos))
    else:
        raise Exception("目标未找到")
except Exception as e:
    print(f"自动化失败: {e}")
    pyautogui.screenshot().save("error_screenshot.png")

输出格式

## Windows应用控制报告

### 操作状态
- **状态**: ✅ 成功 / ❌ 失败
- **执行时间**: 2.3秒
- **截图**: [保存截图]

### 执行步骤
1. ✅ 启动记事本
2. ✅ 输入文字
3. ✅ 截图保存

### 错误信息
无

集成建议

配合技能 效果
playwright Web端自动化
turix-cua 浏览器控制
workflow-verifier 验证自动化脚本
hallucination-detector 检测脚本中的错误

原创性声明

本技能为原创,融合了:

  • PyAutoGUI GUI自动化
  • Win32gui窗口控制
  • Psutil进程管理
  • Windows UI最佳实践

作者: laosi 创建日期: 2026-04-28