如何在 pywinauto 中移动 UIAWrapper windows?

How to move UIAWrapper windows in pywinauto?

我注意到有一种方法可以通过 pywinauto (move_window) 中的 HwndWrapper 移动和调整 win32 windows 的大小,但对于 UIAWrappers 则没有。你知道怎么做吗?

我尝试使用 pygetwindow 的 getWindowsWithTitle 函数获取临时 win32 句柄,然后使用 moveTo/resizeTo 函数,但我无法获取 window 我想要因为一个错误说 ctypes.ArgumentError: argument 1: <class 'TypeError'>: expected WinFunctionType instance instead of WinFunctionType,这真的很奇怪。

好问题!这在 "uia" 后端中的实现方式与 "win32" 后端的实现方式不同。但我可以建议工作代码:

import pywinauto

app = pywinauto.Application(backend='uia').start(r'.\apps\WPF_samples\WpfApplication1.exe')
main = app.WPFSampleApplication.wrapper_object()

main.iface_transform.Move(0, 0) # move the window to top-left corner
main.iface_transform.Resize(500, 600) # change width and height

我们需要提供快捷方式并创建 WindowWrapper,因为这仅针对此控件类型。这在 issue #668.

中进行了跟踪