【问题标题】:How to move an UI automation element to a different location?如何将 UI 自动化元素移动到不同的位置?
【发布时间】:2012-05-02 20:42:45
【问题描述】:

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

现在我想操作那个 AutomationElement,以便我可以将它移动到不同的位置,调整它的大小等等。

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

但代码不起作用。

请给我建议一种方法。

【问题讨论】:

    标签: c# .net winapi user-interface ui-automation


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多