diff --git a/src/main/capabilities/desktop-uia.ts b/src/main/capabilities/desktop-uia.ts index 8e9a154..6243560 100644 --- a/src/main/capabilities/desktop-uia.ts +++ b/src/main/capabilities/desktop-uia.ts @@ -136,8 +136,11 @@ function clickScript(t: UiaTarget): string { const doubleClick = clickway === "1" || /double/i.test(clickway); return `${UIA_USING} ${FIND_HELPER} -$parent = Find-RpaWindow ${psString(s.window ?? "")} -$el = Find-RpaElement $parent ${psString(s.name ?? "")} ${psString(s.id ?? "")} ${psString(s.type ?? "")} ${psString(s.className ?? "")} ${s.index} +$el = $null +try { + $parent = Find-RpaWindow ${psString(s.window ?? "")} + $el = Find-RpaElement $parent ${psString(s.name ?? "")} ${psString(s.id ?? "")} ${psString(s.type ?? "")} ${psString(s.className ?? "")} ${s.index} +} catch { $el = $null } if ($null -eq $el) { Write-Output "JSON_NOT_FOUND"; exit 0 } $rect = $el.Current.BoundingRectangle $offscreen = $el.Current.IsOffscreen -or $rect.Width -le 0 -or $rect.Height -le 0 @@ -190,8 +193,9 @@ function setValueScript(t: UiaTarget, value: string): string { const s = t.selector; return `${UIA_USING} ${FIND_HELPER} -$parent = Find-RpaWindow ${psString(s.window ?? "")} -$el = Find-RpaElement $parent ${psString(s.name ?? "")} ${psString(s.id ?? "")} ${psString(s.type ?? "")} ${psString(s.className ?? "")} ${s.index} +try { + $parent = Find-RpaWindow ${psString(s.window ?? "")} + $el = Find-RpaElement $parent ${psString(s.name ?? "")} ${psString(s.id ?? "")} ${psString(s.type ?? "")} ${psString(s.className ?? "")} ${s.index} if ($null -eq $el) { Write-Output "JSON_NOT_FOUND"; exit 0 } $value = ${psString(value)} $method = "value_pattern" @@ -225,8 +229,9 @@ function getValueScript(t: UiaTarget): string { const s = t.selector; return `${UIA_USING} ${FIND_HELPER} -$parent = Find-RpaWindow ${psString(s.window ?? "")} -$el = Find-RpaElement $parent ${psString(s.name ?? "")} ${psString(s.id ?? "")} ${psString(s.type ?? "")} ${psString(s.className ?? "")} ${s.index} +try { + $parent = Find-RpaWindow ${psString(s.window ?? "")} + $el = Find-RpaElement $parent ${psString(s.name ?? "")} ${psString(s.id ?? "")} ${psString(s.type ?? "")} ${psString(s.className ?? "")} ${s.index} if ($null -eq $el) { Write-Output "JSON_NOT_FOUND"; exit 0 } $value = $el.Current.Name try { $vp = $el.GetCurrentPattern([System.Windows.Automation.ValuePattern]::Pattern); $value = $vp.Value } catch {} @@ -247,7 +252,7 @@ async function runScript(script: string, t: UiaTarget, timeoutMs = 60000): Promi function requireFound(result: Record | null, t: UiaTarget, action: string): Record { if (!result) { const s = t.selector; - throw new RuntimeError("desktop_element_not_found", `桌面元素未找到(${action}):${JSON.stringify({ window: s.window, name: s.name, id: s.id, type: s.type, className: s.className, index: s.index })}`, { nodeId: t.node.id, componentId: t.node.componentId }); + throw new RuntimeError("desktop_element_not_found", `桌面元素未找到(${action}):${JSON.stringify({ window: s.window, name: s.name, id: s.id, type: s.type, className: s.className, index: s.index })}。若指定了窗口,请确认应用已启动且主窗口未最小化到托盘`, { nodeId: t.node.id, componentId: t.node.componentId }); } return result; } @@ -291,3 +296,5 @@ register("Element_ExistsGround", existsGround); register("Element_GetValueGround", getValueGround); register("Element_WaitElementGround", waitElementGround); + +