| name | winpeekaboo |
| description | Windows UI automation CLI tool - Peekaboo Python port with screen capture, element targeting, input simulation, and window/app management. |
| homepage | https://github.com/your-repo/winpeekaboo |
| metadata | {"clawdbot":{"emoji":"","os":["win32"],"requires":{"py":["winpeekaboo"]},"install":[{"id":"pip","kind":"pip","package":"winpeekaboo","label":"Install WinPeekaboo (pip)"}]}} |
WinPeekaboo
WinPeekaboo 是 Peekaboo 的 Python 移植版本,为 Windows 提供完整的 UI 自动化 CLI 工具:捕获屏幕、识别 UI 元素、模拟输入、管理窗口和应用。所有命令支持 --json 输出用于脚本化。运行 winpeekaboo 或 winpeekaboo <cmd> --help 查看完整帮助。
功能特性
核心命令
see: 捕获屏幕并识别 UI 元素(支持 UI Automation)
list: 列出 windows/apps/screens/elements
image: 截图(全屏/指定窗口/区域)
交互命令
click: 点击元素或坐标
type: 输入文本
press: 按键
hotkey: 组合键(如 Ctrl+C)
scroll: 滚动
drag: 拖放操作
系统命令
window: 窗口管理(activate/minimize/maximize/restore/close/move/resize)
app: 应用管理(launch/quit/switch/list)
全局参数
--version/-v: 显示版本信息
--verbose: 详细输出
快速开始
pip install winpeekaboo
winpeekaboo list windows
winpeekaboo see --json
winpeekaboo click --on "100,200"
winpeekaboo click --on "Open" --window "Notepad"
winpeekaboo type --text "Hello, World!"
winpeekaboo press --key "Enter"
winpeekaboo hotkey --keys "Ctrl+C"
通用参数
窗口目标
输出控制
--json: JSON 格式输出
--output/-o: 输出到文件
命令详解
see - 屏幕捕获与UI识别
winpeekaboo see
winpeekaboo see --window "Notepad"
winpeekaboo see --json
winpeekaboo see --screenshot --output snapshot.json
click - 点击元素
winpeekaboo click --on "100,200"
winpeekaboo click --on "Open" --window "Notepad"
winpeekaboo click --on "100,200" --button right
type - 输入文本
winpeekaboo type --text "Hello, World!"
winpeekaboo type --text "Hello" --delay 0.1
winpeekaboo type --text "text" --window "Notepad"
press/hotkey - 键盘操作
winpeekaboo press --key "Enter"
winpeekaboo press --key "Escape"
winpeekaboo hotkey --keys "Ctrl+C"
winpeekaboo hotkey --keys "Ctrl+Shift+T"
winpeekaboo hotkey --keys "Alt+F4"
scroll - 滚动
winpeekaboo scroll --direction down --amount 3
winpeekaboo scroll --direction up --amount 5
drag - 拖放
winpeekaboo drag --from "100,200" --to "300,400"
winpeekaboo drag --from "Source" --to "Target" --window "App"
window - 窗口管理
winpeekaboo window list
winpeekaboo list windows
winpeekaboo window activate --title "Notepad"
winpeekaboo window minimize --title "Notepad"
winpeekaboo window maximize --title "Notepad"
winpeekaboo window restore --title "Notepad"
winpeekaboo window close --title "Notepad"
winpeekaboo window move --title "Notepad" --x 100 --y 100
winpeekaboo window resize --title "Notepad" --width 800 --height 600
app - 应用管理
winpeekaboo app list
winpeekaboo list apps
winpeekaboo app launch --name "notepad.exe"
winpeekaboo app launch --name "notepad.exe" --wait
winpeekaboo app launch --name "code.exe" --args "--new-window"
winpeekaboo app quit --name "Notepad"
winpeekaboo app switch --name "Notepad"
image - 截图
winpeekaboo image --output screenshot.png
winpeekaboo image --window "Notepad" --output notepad.png
winpeekaboo image --region "100,100,800,600" --output region.png
winpeekaboo image --output screenshot.jpg --format jpeg --quality 90
list - 列出资源
winpeekaboo list windows
winpeekaboo list apps
winpeekaboo list screens
winpeekaboo list elements --window "Notepad"
winpeekaboo list windows --filter "Chrome"
winpeekaboo list windows --json
使用流程示例
自动化记事本操作
winpeekaboo app launch --name "notepad.exe" --wait
winpeekaboo see --window "Notepad" --json
winpeekaboo type --text "Hello from WinPeekaboo!" --window "Notepad"
winpeekaboo hotkey --keys "Ctrl+S" --window "Notepad"
sleep 1
winpeekaboo type --text "test.txt"
winpeekaboo press --key "Enter"
窗口管理
winpeekaboo list windows --json
winpeekaboo window activate --title "Chrome"
winpeekaboo window move --title "Chrome" --x 0 --y 0
winpeekaboo window resize --title "Chrome" --width 1200 --height 800
winpeekaboo window maximize --title "Chrome"
sleep 2
winpeekaboo window restore --title "Chrome"
注意事项
- 安全机制: pyautogui 默认启用 failsafe,将鼠标移动到屏幕左上角可紧急停止
- 权限: 某些操作可能需要管理员权限
- 兼容性: 部分应用可能不支持 UI Automation
- 查找元素: 使用
winpeekaboo see --json 查看可用的 UI 元素
作为 Python 库使用
from winpeekaboo import (
WindowEnumerator,
WindowManager,
KeyboardSimulator,
MouseSimulator,
ElementFinder,
)
windows = WindowEnumerator.enumerate_windows()
notepad = WindowEnumerator.find_by_title("Notepad")
mgr = WindowManager()
mgr.activate(notepad.hwnd)
KeyboardSimulator.type_text("Hello, World!")
KeyboardSimulator.hotkey(["ctrl", "s"])
MouseSimulator.click_at(100, 200)