| 分享人 | __NULL__ |
| 分享时间 | 7天12小时前 |
| 最后更新 | 4天10小时前 |
| 修订版本 | 2 |
| 子程序大小 | 20.6 KB |
| Quicker版本 | 1.45.5.0 |
向目标控件或当前焦点输入文本,可选先清空、可选提交回车。
用于在输入框、编辑栏、搜索框等可编辑控件里写入内容。优先用 UIA 原生方式(无前台要求),失败时回退到剪贴板粘贴。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
text | string | 是 | — | 要输入的文本内容 |
ref | string | 否 | 空 | 目标控件的临时引用,如 e6。由 observe / find 返回 |
name | string | 否 | 空 | 目标控件的名称,用于查找输入目标。先精确匹配,失败再包含匹配 |
clear | string | 否 | false | 是否先清空原内容。true 时尝试用 ValuePattern.SetValue 直接覆盖 |
submit | string | 否 | false | 输入后是否发送回车 |
window | string | 否 | 前台窗口 | 目标窗口句柄或标题关键字。仅在用 name 定位时生效 |
ref和name二选一。ref优先;都没有时,文本会发给当前焦点控件。
| 字段 | 类型 | 说明 |
|---|---|---|
ok | boolean | 是否成功 |
action | string | 固定为 type |
strategy | string | 实际使用的输入方式,见下表 |
targetRef | string | 实际使用的 ref(回显) |
targetName | string | 实际使用的 name(回显) |
textLength | number | 输入的字符数 |
cleared | boolean | 是否执行了清空 |
submitted | boolean | 是否发送了回车 |
rootHandle | number | 目标窗口句柄 |
| 值 | 含义 |
|---|---|
uia_setvalue_clear | 用 UIA ValuePattern.SetValue 直接设值并覆盖。无需前台,最可靠 |
clipboard_paste_element | 定位到控件后,剪贴板粘贴(Ctrl+V)。需要前台 |
clipboard_paste_focus | 直接粘贴到当前焦点。需要前台,且依赖用户当前焦点正确 |
成功(UIA 原生方式)
{
"ok": true,
"action": "type",
"strategy": "uia_setvalue_clear",
"targetRef": "e14",
"targetName": "",
"textLength": 12,
"cleared": true,
"submitted": false,
"rootHandle": 69352
}
成功(剪贴板粘贴 + 提交)
{
"ok": true,
"action": "type",
"strategy": "clipboard_paste_element",
"targetRef": "e6",
"targetName": "",
"textLength": 3,
"cleared": false,
"submitted": true,
"rootHandle": 200638
}
失败
{
"ok": false,
"error": "exception",
"message": "..."
}
| 场景 | 调用 |
|---|---|
| 往已知 ref 的输入框写文本 | type(ref="e6", text="另存为") |
| 覆盖编辑栏内容 | type(ref="e14", text="=SUM(A1:A10)", clear=true, submit=true) |
| 按名称找输入框 | type(window=句柄, name="搜索", text="SolidWorks") |
| 往当前焦点输入 | type(text="hello") |
优先 UIA 原生:clear=true 且控件支持 ValuePattern 时,走 SetValue,不依赖前台、不怕遮挡,这是最可靠路径。
回退剪贴板:没有 ValuePattern(如自绘输入框、部分搜索框)时,通过剪贴板 + Ctrl+V 粘贴。此路径需要窗口在前台,工具会先尝试 SetForegroundWindow 激活目标窗口。
中文安全:剪贴板路径对中文、特殊字符都安全,不依赖键盘布局。这一点比逐字符 SendKeys 强。
submit 发的是回车:SendKeys.SendWait("{ENTER}")。在命令搜索框、对话框默认按钮上都有效。
可能的副作用:
SendKeys 依赖前台焦点,若窗口被抢焦点可能发到别处SetForegroundWindow 在某些系统限制下可能失败(Windows 前台锁定)失败排查:
strategy=clipboard_paste_focus 说明既没找到元素、也没法定位,文本发给了当前焦点——很可能发错了地方ref 是否已过期(窗口变化后 ref 失效,需重新 observe)observe / find → 拿到目标控件的 ref 或 name
type → 写入文本
click → 提交按钮(若不用 submit 回车)
定位:basic-control 是通用兜底层,对所有暴露 UIA 的 Windows 桌面软件适用。type 优先走无前台依赖的 UIA 路径,遇到自绘控件才回退到剪贴板粘贴。
| 修订版本 | 更新时间 | 制品 | 更新说明 |
|---|---|---|---|
| 2 | 4天10小时前 | V1 | |
| 1 | 7天12小时前 | V1 |