如何使用Python取出焦点或最小化窗口?

时间:2010-05-07 20:30:25

标签: python firefox windows-7 window

我需要把注意力集中到一个指定的窗口,而我正在看到的唯一方法就是尽量减少它前面的所有窗口,直到我得到正确的窗口......

我该怎么做?

Windows 7,没有特定的工具包......

每种类型的窗口,例如,firefox和console命令

3 个答案:

答案 0 :(得分:14)

您需要通过窗口进行枚举并匹配窗口的标题以获得您想要的窗口。下面的代码在标题中搜索一个带有“firefox”的窗口并设置焦点:

import win32gui

toplist = []
winlist = []
def enum_callback(hwnd, results):
    winlist.append((hwnd, win32gui.GetWindowText(hwnd)))

win32gui.EnumWindows(enum_callback, toplist)
firefox = [(hwnd, title) for hwnd, title in winlist if 'firefox' in title.lower()]
# just grab the first window that matches
firefox = firefox[0]
# use the window handle to set focus
win32gui.SetForegroundWindow(firefox[0])

要最小化窗口,请执行以下操作:

import win32con
win32gui.ShowWindow(firefox[0], win32con.SW_MINIMIZE)

答案 1 :(得分:0)

我从问题中假设,您想要编写一个通用名称,可以使用来自任何应用程序的任何窗口。

您可能想尝试Python Win32 GUI Automation库。我没有使用它,但听起来它可能是你正在寻找的。如果这不起作用,你最好的选择可能是forgo python并使用像AutoIt这样的工具,它提供内置的窗口操作支持。

如果这些解决方案都不起作用,您很可能必须直接调用windows api。我不知道win32api包是否包含了必要的功能,否则你将用c / c ++编写一个python模块。

如果.net api中提供此类功能,您可以使用IronPython。

答案 2 :(得分:0)

您需要通过窗口进行枚举并匹配窗口的标题以获得您想要的窗口。下面的代码搜索一个带有" firefox"的窗口。在标题中设置焦点

要最小化窗口,请使用以下行:

def enumHandler(hwnd, lParam):
   if 'firefox' in win32gui.GetWindowText(hwnd):
      win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)

win32gui.EnumWindows(enumHandler, None)

适用于Windows 10,Python3.5 32位,pywin32-223。


我报告了上述情况,但发生了错误。

  

追踪(最近一次呼叫最后一次):

     

TypeError:对象不是PyHANDLE对象