如何通过pygetwindow原生命令实现窗口取消最大化?
解决pygetwindow无法取消窗口最大化的问题
pygetwindow库的window.maximized = False在部分场景下可能无法生效,这是因为其对窗口状态的封装存在局限性。要原生实现取消最大化且不依赖pyautogui,可以直接调用其底层依赖的Windows API(win32gui)来完成,具体步骤如下:
首先确保安装
pywin32库(pygetwindow在Windows平台依赖它):pip install pywin32使用以下代码取消窗口最大化并恢复可调整状态:
import pygetwindow as gw import win32gui import win32con # 通过标题获取目标窗口 target_window = gw.getWindowsWithTitle("你的目标窗口标题")[0] # 检查窗口是否处于最大化状态 if target_window.isMaximized: # 调用Windows API恢复窗口(取消最大化) win32gui.ShowWindow(target_window._hWnd, win32con.SW_RESTORE) # 刷新窗口状态,确保pygetwindow能获取到最新状态 target_window.update() # 现在可以正常调整窗口大小和位置了 target_window.resizeTo(800, 600) target_window.center()
说明
target_window._hWnd是pygetwindow窗口对象内部存储的系统窗口句柄,直接传递给win32gui.ShowWindow可以调用原生系统接口。win32con.SW_RESTORE是Windows系统定义的窗口状态常量,用于将最大化/最小化的窗口恢复到之前的正常状态,完全原生,无需模拟用户操作。
内容的提问来源于stack exchange,提问作者Coding Genius
相关产品推荐
相关产品推荐

