Windows用户界面自动化系统
JSON-RPC 2.0 HTTP服务器,提供自动化的Windows UI测试功能。AI助手可以使用它来启动应用程序、查询UI结构、发送输入和验证结果。
快速开始
# 1. Start MCP Server
node dist/start-mcp-server.js
# Server runs on http://127.0.0.1:3457
# 2. Launch and test Calculator
Invoke-WebRequest -Uri "http://127.0.0.1:3457" -Method POST -ContentType "application/json" -UseBasicParsing -Body '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"launchProcess","arguments":{"executable":"calc.exe"}}}'
# 3. Send keyboard input
Invoke-WebRequest -Uri "http://127.0.0.1:3457" -Method POST -ContentType "application/json" -UseBasicParsing -Body '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"setProperty","arguments":{"providerName":"windows-forms","elementId":"ApplicationFrameHost","propertyName":"keys","value":"5+3="}}}'
# 4. Read result
$response = Invoke-WebRequest -Uri "http://127.0.0.1:3457" -Method POST -ContentType "application/json" -UseBasicParsing -Body '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"readProperty","arguments":{"providerName":"windows-forms","elementId":"ApplicationFrameHost","propertyName":"text"}}}'
($response.Content | ConvertFrom-Json).result.value特性
- 启动应用程序:通过API启动任何Windows应用程序
- 查询UI结构:获取包含位置和属性的元素树
- 键盘输入:将按键发送到应用程序(直接或聚焦模式)
- 读取数值:提取显示文本和控件值
- 鼠标控制:按坐标或名称单击元素
- 窗口管理:列出并枚举所有可见窗口
- 直接喷射:无焦点窃取的通用输入注入(使用UI自动化)
API工具
launchProcess-启动应用程序listWindows-枚举带有标题和PID的窗口queryTree-获取具有元素位置的UI结构setProperty-发送输入(键盘、鼠标、值)readProperty-读取显示值clickElement-单击UI元素getProviders-列出可用的自动化提供商
文档
- AI_ASSISTANT_MANUAL.md -AI助手完整指南
- 服务器_API.md -HTTP JSON-RPC API参考
- KEYWIN_API.md键 -KeyWin.exe命令参考(包括注入模式)
- API毫米 -高级概述
- 建筑.md -系统设计
- 安全_建筑.md -安全设计和实施
- START_HERE.md -开始使用
输入注射模式
KeyWin.exe支持两种注入模式:
直接模式(默认)- --inject-mode=direct
- 没有焦点窃取:在不激活目标窗口的情况下注入输入
- 通用方法:适用于Win32和UWP应用程序(记事本、计算器)
- UI自动化:文本控件使用ValuePattern,按钮使用InvokePattern
- 独立于语言:使用Automation Id而不是本地化按钮名称
- 最适合:在后台运行的自动化,多窗口工作流
聚焦模式- --inject-mode=focus
- 传统方法:激活窗口(SetForegroundWindow),然后使用SendKeys
- 转移注意力:目标窗口位于前面
- 通用兼容性:适用于所有接受键盘输入的应用程序
- 最适合:单窗口集中测试,遗留应用程序
配置
通过以下方式设置注射模式:
- 命令行:
KeyWin.exe --inject-mode=direct notepad "text" - 环境变量:
KEYWIN_INJECT_MODE=focus - MCP提供商:设置
KEYWIN_INJECT_MODE启动服务器之前
违约: direct 最小干扰模式
建筑
HTTP Client (PowerShell, Node.js, etc)
↓ JSON-RPC 2.0
MCP Server (TypeScript - port 3457)
↓
Automation Engine (TypeScript)
↓
Windows Forms Provider (TypeScript)
↓
WinKeys.exe (C# - UIAutomation wrapper)
↓
Windows UIAutomation Framework需求
- Windows 10/11
- Node.js 18+
- .NET Framework 4.0+(适用于WinKeys.exe)
安装
npm install
npm run compile生成WinKeys.exe
.\scripts\build-win-tools.ps1VS代码扩展
可以打包为VS代码扩展:
npm run package
# Creates ai-ui-automation-0.1.1.vsix许可证
请参阅许可证文件。
