Gui*_*eus 5 python pywin32 win32gui pywinauto
我正在尝试自动化一些 Windows 任务,并且获得了所有打开的窗口的数据框,然后添加了更多列,以便在继续自动化之前进行一些验证。
\n从功能激活窗口后set_focus(),我根本无法调整任何窗口的大小,根本没有任何反应。
我已经尝试使用win32gui解决方案:
current = win32gui.GetForegroundWindow()\nwin32gui.MoveWindow(current, 0, 0, 100, 100, True)\nRun Code Online (Sandbox Code Playgroud)\n我也尝试使用pygetwindow函数resizeToor size,但也没有任何反应。
如果我运行以下命令app.move_window(x=None, y=None, width=100, height=100, repaint=True):AttributeError: \'UIAWrapper\' object has no attribute \'move_window\'
我的代码:
\nfrom 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)\nRun Code Online (Sandbox Code Playgroud)\n之后如何调整活动窗口的大小set_focus()?
[编辑]
\n按照 @Vasily Ryabov 提示,我下载了Windows SDK以安装具有的功能,还按照入门主题中Inspect.exe的文档以及辅助工具 - 检查中提供的文档,我能够使用检查和选项找到我的应用程序可作为以下证据:pywinautoResize
所以我尝试了以下命令:
\n1\xc2\xba:
app.iface_transform.Resize(200, 600) \nRun Code Online (Sandbox Code Playgroud)\n错误:
\napp.iface_transform.Resize(200, 600)\n_ctypes.COMError: (-2146233079, None, (None, None, None, 0, None))\nRun Code Online (Sandbox Code Playgroud)\n2\xc2\xba:
\napp.Resize(200, 600) \nRun Code Online (Sandbox Code Playgroud)\n错误:
\nAttributeError: \'UIAWrapper\' object has no attribute \'Resize\'\nRun Code Online (Sandbox Code Playgroud)\n3\xc2\xba:
\napp.wrapper_object.Resize(200, 600) \nRun Code Online (Sandbox Code Playgroud)\n错误:AttributeError: \'UIAWrapper\' object has no attribute \'wrapper_object\'
我建议对 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 方法的方法。