【问题标题】:How to maximize an inactive window?如何最大化非活动窗口?
【发布时间】:2019-02-28 04:17:14
【问题描述】:

我有多个窗口,但我只想最大化其中一个窗口,下面是我的脚本:

import win32gui, win32con
win32gui.ShowWindow('C:/Desktop/UD.ca', win32con.SW_MAXIMIZE)

运行此脚本后出现以下错误:

错误

TypeError: The object is not a PyHANDLE object

有人对此有想法吗?

【问题讨论】:

    标签: python python-3.6 pywin32 win32gui


    【解决方案1】:

    您需要要最大化的窗口的HWND'C:/Desktop/UD.ca' 不是 HWND。将其视为窗口的唯一 ID。

    例如,可以通过

    获取前台窗口的HWND
    hwnd = win32gui.GetForegroundWindow()
    

    然后在调用中将其传递给ShowWindow

    win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
    

    如果您想在所有可见窗口中搜索包含标题的窗口,请参阅Get HWND of each Window?

    【讨论】:

    • 我可以知道如何使非活动窗口保持活动状态吗?因为一旦我在脚本上运行,python 控制台就会成为活动窗口,它将最大化 python 窗口而不是我在脚本中打开的窗口
    • 就像我说的,你需要找到你想要最大化的窗口的 HWND。如果从脚本内部打开一个新窗口,则必须找到该新窗口的 HWND。
    【解决方案2】:

    这种方法对我有用,我将它与另一个代码结合起来找到我的窗口,并且工作得很好,谢谢。我正在寻找一个名为“outlook”的窗口,将其向前推进然后最大化。

     # maximize window
    top_windows = []
    win32gui.EnumWindows(windowEnumerationHandler, top_windows)
    for i in top_windows:
        if "outlook" in i[1].lower():
            print(i)
            hwnd = win32gui.GetForegroundWindow()
            win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
            break
    

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多