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

C# 如何将UI自动化元素移动到其他位置?,c#,.net,winapi,user-interface,ui-automation,C#,.net,Winapi,User Interface,Ui Automation,我有一个C.NET应用程序,在其中我可以使用FromPoint函数在特定点找到AutomationElement 现在我想操纵AutomationElement,以便将其移动到其他位置,调整大小等 对于移动和调整大小,我认为可以使用SetWindowPos窗口API函数,但这需要目标窗口的handlean IntPtr。使用AutomationElement的当前属性,我可以读取它的NativeWindowHandlean int。 由于控件也是一个窗口,我将这个int值作为窗口句柄传递给Set

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

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

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

但代码不起作用


请给我建议一种方法。

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

在UIAutomation中移动对象的正式方法是查看元素是否支持,然后使用move或Resize方法适当地移动它。我认为这主要是在顶级窗口上实现的,不确定它在其他控件上实现的范围有多广-您可以使用UISpy/Inspect检查您的目标UI

如果元素是HWND,您还可以获取NativeWindowHandle属性——这是底层HWND,但您需要先将其转换为IntPtr——然后在Win32 API中使用它。不过,这只适用于实际的HWND项目,而不适用于listview中的项目