Pywinauto:如何调整活动窗口的大小

Gui*_*eus 5 python pywin32 win32gui pywinauto

我正在尝试自动化一些 Windows 任务,并且获得了所有打开的窗口的数据框,然后添加了更多列,以便在继续自动化之前进行一些验证。

\n

从功能激活窗口后set_focus(),我根本无法调整任何窗口的大小,根本没有任何反应。

\n

我已经尝试使用win32gui解决方案:

\n
current = win32gui.GetForegroundWindow()\nwin32gui.MoveWindow(current, 0, 0, 100, 100, True)\n
Run Code Online (Sandbox Code Playgroud)\n

我也尝试使用pygetwindow函数resizeToor size,但也没有任何反应。

\n

如果我运行以下命令app.move_window(x=None, y=None, width=100, height=100, repaint=True)AttributeError: \'UIAWrapper\' object has no attribute \'move_window\'

\n

我的代码:

\n
from pywinauto import Desktop\nimport pandas as pd\n\nwindows = Desktop(backend="uia").windows()\nwindow = [w.window_text() for w in windows]\n\n# Create a dataframe in order to store the windows needed\ndf_windows = pd.DataFrame(window, columns =[\'WebBrowser\'])\n# Filter dataframe only to show all windows from Brave web browser\ndf_windows = df_windows.loc[df_windows[\'WebBrowser\'].str.contains("Brave:", case=False)]\n# Add column profile from Brave\ndf_windows[\'Profile\'] = df_windows[\'WebBrowser\'].str.split(\':\').str[1].str.strip()\n# Add column window open from Brave\ndf_windows[\'Window\'] = df_windows[\'WebBrowser\'].str.split(\':\').str[0].str.strip()\n# Add column about the website open from Brave\ndf_windows[\'Website\'] = df_windows[\'Window\'].str.replace(" - Brave", "").str.strip()\n# Filter dataframe only to show all bombcrypto game window\ndf_windows = df_windows.loc[df_windows[\'Website\'] == \'GuilhermeMatheus\']\n\nprint(df_windows)\n\nfor x in df_windows[\'WebBrowser\']:\n    print(x)\n    app = Desktop(backend="uia").windows(title=x)[0]\n    app.set_focus()\n    app.move_window(x=None, y=None, width=100, height=100, repaint=True)\n
Run Code Online (Sandbox Code Playgroud)\n

之后如何调整活动窗口的大小set_focus()

\n

[编辑]

\n

按照 @Vasily Ryabov 提示,我下载了Windows SDK以安装具有的功能,还按照入门主题中Inspect.exe的文档以及辅助工具 - 检查中提供的文档,我能够使用检查和选项找到我的应用程序可作为以下证据:pywinautoResize

\n

在此输入图像描述

\n

所以我尝试了以下命令:
\n1\xc2\xba:

\n
app.iface_transform.Resize(200, 600)  \n
Run Code Online (Sandbox Code Playgroud)\n

错误:

\n
app.iface_transform.Resize(200, 600)\n_ctypes.COMError: (-2146233079, None, (None, None, None, 0, None))\n
Run Code Online (Sandbox Code Playgroud)\n

2\xc2\xba:

\n
app.Resize(200, 600)  \n
Run Code Online (Sandbox Code Playgroud)\n

错误:

\n
AttributeError: \'UIAWrapper\' object has no attribute \'Resize\'\n
Run Code Online (Sandbox Code Playgroud)\n

3\xc2\xba:

\n
app.wrapper_object.Resize(200, 600)  \n
Run Code Online (Sandbox Code Playgroud)\n

错误:AttributeError: \'UIAWrapper\' object has no attribute \'wrapper_object\'

\n

Vas*_*bov 1

我建议对 UIAWrapper 对象尝试这些方法(假设app是一个UIAWrapper实例)。在你的代码中它应该看起来像:

app.iface_transform.Move(x, y)
app.iface_transform.Resize(width, height)
Run Code Online (Sandbox Code Playgroud)

要了解此 TransformPattern 是否可用,让我们使用所选窗口的“操作”菜单中的 Inspect.exe 检查它:

操作菜单中的变换模式

在下一个主要版本(尚未发布)中,我们实现了 WindowWrapper,其中包含move_window使用上述 TrasformPattern 方法的方法。