如何将 UI 自动化元素移动到其他位置



我有一个C#.NET应用程序,我可以使用FromPoint函数在特定点找到AutomationElement。

现在我想操作该 AutomationElement,以便我可以将其移动到其他位置,调整其大小等。

对于移动和调整大小,我认为我可以使用SetWindowPos Window API函数,但这需要目标窗口的句柄(IntPtr(。 使用 AutomationElement 的 "Current" 属性,我可以读取它的 NativeWindowHandle(一个 int(。由于 Control 也是一个窗口,我将这个 int 值作为窗口句柄传递给 SetWindowPost 函数,希望它能完成我的工作。

但是代码不起作用。

请向我建议一种方法。

您要移动的元素类型是什么 - 顶级窗口或窗口中的项?此外,这是用户可以使用鼠标或键盘移动的一种项目类型吗?UIAutomation只允许您操作与普通用户一致的UI,例如,您不能使用它来移动对话框上的控件。

在 UIAutomation 中移动内容的官方方法是查看元素是否支持转换模式,然后使用 Move 或 Resize 方法适当地移动它。我认为这主要仅在顶级窗口上实现,不确定它在其他控件上的实现范围 - 您可以使用 UISpy/Inspect 来检查您的目标 UI。

如果元素是 HWND,

您还可以获取 NativeWindowHandle 属性 - 这是基础 HWND,但您需要先将其转换为 IntPtr,然后在 Win32 API 中使用它。但是,这仅适用于实际的 HWND 项目,不适用于列表视图中的项。

最新更新