1

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

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

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

但是代码不起作用。

请建议我一种方法来做到这一点。

4

1 回答 1

0

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

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

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

于 2012-05-02T21:31:55.853 回答