我需要把注意力集中到一个指定的窗口,而我正在看到的唯一方法就是尽量减少它前面的所有窗口,直到我得到正确的窗口......
我该怎么做?
Windows 7,没有特定的工具包......
每种类型的窗口,例如,firefox和console命令
答案 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对象