You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python psutil获取电脑前台应用(非进程)列表?

如何列出Windows前台可见应用(对应任务管理器「APPS」分类)

你用psutil只能遍历所有进程,没法区分任务管理器里「APPS」分类的前台可见应用——这类应用都是带有可见窗口的GUI程序,而psutil本身没有窗口相关的判断能力。要实现需求,得结合Windows的窗口API来筛选,下面是具体的实现方案:

实现步骤

  1. 先安装依赖库pywin32,它能调用Windows系统API获取窗口信息:
pip install pywin32
  1. 使用以下代码筛选可见的前台应用:
import win32gui
import win32process
import psutil

def get_visible_apps():
    visible_apps = []
    
    # 遍历所有顶层窗口的回调函数
    def enum_windows_callback(hwnd, extra):
        # 只保留可见且有窗口标题的窗口
        if win32gui.IsWindowVisible(hwnd):
            window_title = win32gui.GetWindowText(hwnd)
            if window_title:
                # 获取窗口对应的进程ID
                _, pid = win32process.GetWindowThreadProcessId(hwnd)
                try:
                    process = psutil.Process(pid)
                    # 过滤掉系统后台进程(可根据需求调整名单)
                    system_processes = ["svchost.exe", "csrss.exe", "wininit.exe", "services.exe"]
                    if process.name() not in system_processes:
                        visible_apps.append({
                            "窗口标题": window_title,
                            "进程名": process.name(),
                            "PID": pid
                        })
                except (psutil.NoSuchProcess, psutil.AccessDenied):
                    # 忽略无法访问的进程
                    pass
        return True
    
    win32gui.EnumWindows(enum_windows_callback, None)
    
    # 去重:同一进程可能有多个窗口,只保留一条记录
    unique_apps = {}
    for app in visible_apps:
        key = (app["进程名"], app["PID"])
        if key not in unique_apps:
            unique_apps[key] = app
    
    return list(unique_apps.values())

# 打印结果
for app in get_visible_apps():
    print(f"窗口标题: {app['窗口标题']}, 进程名: {app['进程名']}, PID: {app['PID']}")

代码说明

  • win32gui.EnumWindows:遍历系统中所有顶层窗口
  • IsWindowVisible:判断窗口是否处于可见状态
  • GetWindowText:获取窗口标题,排除无标题的系统窗口(比如任务栏、桌面底层窗口)
  • GetWindowThreadProcessId:把窗口和对应的进程ID关联起来
  • 最后通过psutil获取进程信息,并过滤掉常见的后台系统进程,同时做去重处理

你可以根据自己的需求调整system_processes列表,比如要不要保留explorer.exe(桌面资源管理器),或者添加其他需要排除的进程。

内容的提问来源于stack exchange,提问作者Cyber Bandit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:02:43