如何获取已打开窗口名称并切换到目标窗口?
实现Windows窗口查找、切换与最大化
方案一:使用pygetwindow(跨平台,简单易用)
- 安装依赖库
pip install pygetwindow pyrect
- 实现代码
import pygetwindow as gw # 获取所有可见的打开窗口 all_windows = gw.getAllWindows() # 筛选标题包含"Notepad"或"Facebook"的窗口 target_windows = [win for win in all_windows if "Notepad" in win.title or "Facebook" in win.title] for win in target_windows: # 激活窗口(切换为主窗口) win.activate() # 最大化窗口 win.maximize() # 获取当前活动窗口的标题 active_window = gw.getActiveWindow() if active_window: print(f"当前活动窗口:{active_window.title}")
方案二:使用pywin32(Windows专属,底层控制)
如果需要更底层的Windows API控制,可采用此方案:
- 安装依赖
pip install pywin32
- 实现代码
import win32gui import win32con def get_all_visible_windows(): windows = [] def enum_windows_callback(handle, extra_list): if win32gui.IsWindowVisible(handle): window_title = win32gui.GetWindowText(handle) if window_title: extra_list.append((handle, window_title)) win32gui.EnumWindows(enum_windows_callback, windows) return windows # 获取所有可见窗口 all_windows = get_all_visible_windows() # 筛选目标窗口 target_handles = [handle for handle, title in all_windows if "Notepad" in title or "Facebook" in title] for handle in target_handles: # 将窗口前置并激活 win32gui.SetForegroundWindow(handle) # 最大化窗口 win32gui.ShowWindow(handle, win32con.SW_MAXIMIZE) # 获取当前活动窗口标题 active_handle = win32gui.GetForegroundWindow() active_title = win32gui.GetWindowText(active_handle) print(f"当前活动窗口:{active_title}")
说明
- 两种方案都能避免
pyautogui模拟按键的不稳定问题,直接通过窗口对象/句柄操作 - 若需精确匹配窗口标题,可将判断条件中的
in改为== - 存在多个目标窗口时,会依次激活并最大化每个窗口
内容的提问来源于stack exchange,提问作者Austin
相关产品推荐
相关产品推荐

