用命令行操控 Windows 桌面窗口与控件
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add cnyc6n/uia-agent该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 包内无可扫 JS
- · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 命令行操控桌面窗口
- 枚举与查找控件
- 点击输入滚动拖拽
README
由 DeepSeek 最新模型翻译生成uia_agent — Windows UI Automation 代理(单 exe)
对 Windows 桌面窗口做:枚举、快照、查找、点击、设值、滚动、拖动、滑动、截屏、窗口状态控制(置顶/最大化/最小化/恢复/关闭)。
- 单文件 exe,C++17 / MSVC / CMake+Ninja 构建,静态 CRT(无 VC++ 运行库依赖,本机 0.44 MB :Debug>")
并带 /utf-8、Release /O2。依赖系统库:Uiautomationcore Ole32 User32 OleAut32 Windowscodecs Gdi32 Uuid(UIAutomationCore / Windowscodecs 为 COM 运行时动态加载,不进静态导入表,属正常)。
展开完整文档(README 剩余 1 节)
uia_agent — Windows UI Automation 代理(单 exe)
对 Windows 桌面窗口做:枚举、快照、查找、点击、设值、滚动、拖动、滑动、截屏、窗口状态控制(置顶/最大化/最小化/恢复/关闭)。
- 单文件 exe,C++17 / MSVC / CMake+Ninja 构建,静态 CRT(无 VC++ 运行库依赖,本机 0.44 MB :Debug>")
并带 /utf-8、Release /O2。依赖系统库:Uiautomationcore Ole32 User32 OleAut32 Windowscodecs Gdi32 Uuid(UIAutomationCore / Windowscodecs 为 COM 运行时动态加载,不进静态导入表,属正常)。
命令列表
| 命令 | 说明 |
| list | 按 Z-order(最前→最后)枚举可见顶层窗口,过滤 #32768/Tooltip/SysShadow/MSCTFIME UI/IME 类名前缀 |
| snapshot --hwnd [--depth ] | 单窗口 UIA 控制视图树快照,默认 depth=8,max_nodes=5000 |
| snapshot_all [--depth ] | 对每个可见顶层窗口快照;双后端:UIA 节点数 ≤ 1 时降级 Win32 枚举;最小化/不可见/拍不到加对应 state |
| find --hwnd --q | 按条件查节点。条件:name/automation_id/class_name 子串匹配,control_type 全等(均大小写不敏感) |
| click --hwnd --q [--mode semantic\|mouse] | 语义:优先 InvokePattern,失败退化 SendInput 移点;--mode mouse 强制坐标点击 |
| click --x --y | 屏幕物理坐标点击 |
| set_text --hwnd --q --text | 优先 ValuePattern::SetValue,失败退化 点击+Ctrl+A+键入(KEYEVENTF_UNICODE,支持中文) |
| get_text --hwnd --q | ValuePattern 读值 |
| scroll --hwnd [--q ] [--amount ] | 有 ScrollPattern 走 pattern;否则 rect 中心滚轮(amount>0 下滚, | 发送键盘组合键:ctrl+c / alt+tab / shift+f10 / win+e(25+ 命名按键) |
| clipboard --set / clipboard | 写剪贴板文本,或读取(CF_UNICODETEXT) |
| wait_for --hwnd --q [--timeout_ms] [--interval_ms] | 轮询直到匹配控件出现(默认 5000ms 超时 / 300ms 间隔) |
| foreach --cmd [--args ] | 对每个可见顶层窗口执行子命令(snapshot/close/find/...) |
| drag --x1 --y1 --x2 --y2 [--duration ] | SendInput 按下→分步移动→抬起,默认 300ms |
| swipe --hwnd [--q ] --direction up\|down\|left\|right [--distance ] | 控件矩形内滑动 |
| screenshot --hwnd [--out ] [--base64] | PrintWindow 抓图,PNG 由 WIC 编码;--out 写文件,否则输出 base64 |
| minimize --hwnd | SW_MINIMIZE |
| maximize --hwnd | SW_MAXIMIZE |
| restore --hwnd | SW_RESTORE |
| topmost --hwnd [--off] | SetWindowPos 置顶(缺省 on,--off 取消) |
| close --hwnd | 发送 WM_CLOSE(应用可拦截/提示保存,比强杀友好) |
通用:--help;--timeout (UIA 调用超时,默认 5000ms)。
示例输出 json // list(裸数组,唯一非 ok 包装的输出)
[{"hwnd":527984,"title":"计算器","class_name":"ApplicationFrameWindow","pid":22712},
{"hwnd":1378628,"title":"test_doc.txt - 记事本","class_name":"Notepad","pid":5964}]
// find
{"count":1,"hwnd":1378628,"nodes":[{"name":"文本编辑器","control_type":"Edit",
"automation_id":"15","class_name":"Edit",
"rect":{"left":719,"top":406,"right":1560,"bottom":885,"cx":841,"cy":479},
"children":[]}],"ok":true,"walked":23}
// set_text / get_text
{"method":"value_pattern","ok":true,"text":"hello"}
{"ok":true,"text":"hello"}
// click(语义 invoke 成功) {"hwnd":1116574,"method":"invoke_pattern","mode":"semantic","ok":true}
// screenshot --out
{"h":966,"ok":true,"path":"...notepad.png","w":1576}
// 窗口状态(含关闭) {"hwnd":1116574,"ok":true,"state":"topmost"} {"hwnd":1116574,"ok":true,"state":"minimized"} {"hwnd":1116574,"ok":true,"state":"closing"} // close: 已发送 WM_CLOSE
// 失败 {"ok":false,"err":"not_found"} {"ok":false,"err":"timeout"} {"ok":false,"err":"minimized"} {"ok":false,"err":"invalid_window"} // close 目标窗口不存在
关键实现说明
- DPI:启动最先 SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2),失败退化 SetProcessDPIAware();所有 rect / 位图 / 鼠标坐标统一物理像素。
- screenshot 严格路径:尺寸取 GetWindowRect 宽高;CreateDIBSection 按 w×h 建 32 位 BGRA、biHeight=-h(自上而下);PrintWindow 写 DIB → WIC(GUID_WICPixelFormat32bppBGRA)编码 PNG;PrintWindow FALSE 或抽样 3×3 网格全 0(全黑/全透明)→ capture_failed;IsIconic → minimized;w/h≤0 → bad_window_rect。GDI 对象(HDC/HBITMAP)经 RAII 成对释放。
- 超时:UIA 遍历在独立 worker 线程(内部 CoInitializeEx),主线程条件变量定时等待,超时置 cancel 并输出 {"ok":false,"err":"timeout"},进程随即退出。
- BoundingRectangle 语义自适应:实测 Win32 控件返回 [left,top,right,bottom],而 UWP/XAML provider(如计算器)返回 [left,top,width,height]。解码时若 right(depth=4,23 节点:菜单/编辑框/状态栏/滚动条齐全) | ✅ |
| 3 | find --q {"control_type":"Edit"} 命中编辑框,rect 正确 | ✅ |
| 4 | set_text --q {"control_type":"Edit"} --text hello(value_pattern) | ✅ |
| 5 | get_text 读回 "hello" | ✅ |
| 6 | 计算器 click --q {"automation_id":"num7Button"} (invoke_pattern),显示器变"显示为 7"、再点成 77 | ✅ |
| 7 | click --x 1222 --y 1035 坐标点击(显示从 77 变 7,755,证明命中) | ✅ |
| 8 | screenshot --out notepad.png → PNG 1576×966 严格等于 GetWindowRect 宽高,图像查看/视觉识别标题栏+菜单+"hello"正确 | ✅ |
| 9 | screenshot --base64 → 还原后 PNG 签名 89 50 4E 47...、尺寸一致 | ✅ |
| 10 | Edge(Chromium 内核)snapshot 取到外壳(Window + 4 节点),snapshot_all 无 unsupported | ✅ |
| 附加 | scroll/drag/swipe、minimize/maximize/restore/topmost(--off) 全部实测生效(IsIconic/IsZoomed/WS_EX_TOPMOST 断言) | ✅ |
| 附加 | 超时兜底 --timeout 10 → {"err":"timeout"};最小化截图 → {"err":"minimized"} | ✅ |
构建回归脚本 build.ps1、测试脚本 tests\run_tests.ps1 已在仓库内。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
cnyc6n/uia-agent
用命令行操控 Windows 桌面窗口与控件
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目