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

如何将Windows系统运行的应用列表完整保存为JSON文件?

问题原因

你每次枚举到可见窗口时,都会新建一个仅包含当前窗口标题的app_list,并且用'w'模式打开文件——这个模式会直接覆盖之前写入的内容,最终文件里只会保留最后一个被枚举到的窗口标题。

修正后的代码
import json
import win32gui

def list_window_names():
    app_list = []  # 初始化空列表存储所有窗口标题
    
    def winEnumHandler(hwnd, ctx):
        if win32gui.IsWindowVisible(hwnd):
            window_title = win32gui.GetWindowText(hwnd)
            # 过滤空标题窗口(部分可见窗口标题为空)
            if window_title:
                ctx.append(window_title)
    
    # 将app_list作为上下文传递给枚举回调函数,统一收集所有窗口标题
    win32gui.EnumWindows(winEnumHandler, app_list)
    
    # 所有窗口枚举完成后,一次性写入文件
    with open('application_running.json', 'w', encoding='utf-8') as f:
        json.dump(app_list, f, ensure_ascii=False, indent=4)
    print('所有运行的应用已保存到application_running.json')

list_window_names()
关键修正点
  • 把列表初始化放在枚举回调函数外部,通过EnumWindows的上下文参数传递,确保所有窗口标题都添加到同一个列表中。
  • 仅在枚举完成后执行一次文件写入操作,避免多次覆盖内容。
  • 增加空标题过滤,避免列表中出现无效的空字符串条目。
  • 指定utf-8编码和ensure_ascii=False,保证中文窗口标题能正确保存。

内容的提问来源于stack exchange,提问作者so-me

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:50:25