如何在Windows系统中仅显示正在运行的应用程序而非全部tasklist内容
解决方案
方法1:直接通过命令行管道筛选(无需额外依赖)
你可以直接给tasklist命令搭配Windows自带的findstr工具做内容过滤,不需要安装额外依赖,直接构造命令传给os.system即可:
- 固定筛选指定应用的命令:
tasklist | findstr /i "chrome.exe zalo.exe"
参数说明:/i表示匹配时忽略大小写,避免因为进程名大小写差异导致漏匹配- 引号内的内容是你要筛选的进程名,多个进程名用空格分隔
直接把命令传入os.system就能得到仅包含目标应用的运行结果:
import os os.system('tasklist | findstr /i "chrome.exe zalo.exe"')
如果要筛选所有带交互窗口的用户级运行应用(排除后台系统进程),可以用tasklist自带的过滤参数:tasklist /fi "windowtitle ne N/A" /fi "status eq running"
该命令会过滤掉无窗口标题的后台进程,只显示有交互界面的正在运行的应用。
方法2:用psutil库实现更灵活的进程查询(推荐)
如果你后续需要对进程数据做进一步处理(比如获取PID、内存占用、执行路径等),建议用第三方库psutil实现,不需要手动解析命令行输出,稳定性和扩展性更高:
首先安装依赖:pip install psutil
示例代码:
import psutil # 自定义要筛选的进程名列表 target_procs = {'chrome.exe', 'zalo.exe'} for proc in psutil.process_iter(['name', 'pid', 'status']): try: proc_info = proc.info if proc_info['name'].lower() in target_procs and proc_info['status'] == 'running': print(f"进程名:{proc_info['name']},PID:{proc_info['pid']}") except (psutil.NoSuchProcess, psutil.AccessDenied): # 跳过无权限访问或已经结束的进程 continue
如果需要筛选所有前台带窗口的应用,可以额外搭配win32gui获取窗口对应的进程ID做匹配,过滤掉后台无窗口的静默进程。
内容的提问来源于stack exchange,提问作者NHITUYET1
相关产品推荐
相关产品推荐

