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

92dk7w1h  于 2023-06-04  发布在  Python
关注(0)|答案(3)|浏览(533)

我需要把焦点集中到一个指定的窗口上,而我在头上看到的唯一方法是最小化它前面的所有窗口,直到我得到正确的窗口。
我该怎么做?
Windows 7,没有特定的工具包。
每种类型的窗口,例如,火狐和控制台命令

x6yk4ghg

x6yk4ghg1#

您需要枚举窗口并匹配窗口的标题以获得所需的窗口。下面的代码搜索标题中包含“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)
1l5u6lss

1l5u6lss2#

您需要枚举窗口并匹配窗口的标题以获得所需的窗口。下面的代码搜索标题中有“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对象

41zrol4v

41zrol4v3#

我从这个问题中假设,你想写一个泛型的to,它可以在任何应用程序的任何窗口中工作。
你可能想试试Python Win32 GUI Automation库。我没有使用它,但听起来像它可能是你正在寻找的。如果这不起作用,你最好的选择可能是放弃python,使用像AutoIt这样的工具,它提供了对窗口操作的内置支持。
如果这两种解决方案都不起作用,你可能必须直接调用windows API。我不知道win32 api包是否 Package 了必要的功能,否则你就得用c/c++写一个python模块了。
如果.net API中有这种功能,那么可以使用IronPython。

相关问题