diff --git a/src/renderer/src/panels/Properties.tsx b/src/renderer/src/panels/Properties.tsx index 348e181..30708b0 100644 --- a/src/renderer/src/panels/Properties.tsx +++ b/src/renderer/src/panels/Properties.tsx @@ -511,6 +511,8 @@ function FieldControl({ }) { const raw = node.values[field.key] ?? field.defaultValue; const [picking, setPicking] = useState(false); + const [windowList, setWindowList] = useState<{ title: string; process?: string }[]>([]); + const [windowPickerField, setWindowPickerField] = useState(null); const isGroundTarget = node.componentId.endsWith("Ground"); const isVisionSource = /^(OcrOffline_|CV_|Image_)/.test(node.componentId); const isWindowTarget = /^(Window_|System_ConnectRemoteDesktop)/.test(node.componentId); @@ -636,16 +638,8 @@ function FieldControl({ onToast("未找到可见窗口", "error"); return; } - for (let wi = 0; wi < list.length; wi++) { - const w = list[wi] as { title: string; process?: string }; - const ok = confirm(`窗口 ${wi + 1}/${list.length}:${w.title}(${w.process ?? "未知"})\n\n确定选这个窗口?取消看下一个`); - if (ok) { - onChange(field.key, w.title); - onToast("已选择窗口:" + w.title); - return; - } - } - onToast("未选择窗口"); + setWindowList(list as { title: string; process?: string }[]); + setWindowPickerField(field.key); } catch (error) { onToast(error instanceof Error ? error.message : String(error), "error"); @@ -704,6 +698,7 @@ function FieldControl({ const hint = field.description || fallbackHint; return ( + <>
+ + {windowPickerField && ( +
setWindowPickerField(null)}> +
e.stopPropagation()}> +
选择窗口
+ {windowList.map((w, i) => ( + + ))} +
+
+ )} + ); }