如何在 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.
中进行了跟踪
我注意到有一种方法可以通过 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.