基于 tkinter 开发的程序 / 网址启动器(RunCat),支持可视化管理启动项、拖拽排序、延迟启动、开机自启、托盘常驻、日志记录等功能,兼容 Windows 系统,可打包为 exe 运行。
核心功能拆解
1. 路径兼容(适配 exe 打包)
exe_dir():获取程序运行目录(源码 / 打包后通用)resource_path():读取打包资源(PyInstaller onefile/onedir 兼容)data_path():持久化配置文件路径(固定到 exe 同目录)
2. 核心特性
| 功能 | 实现方式 |
|---|---|
| 开机自启(Windows) | 通过修改注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
| 托盘常驻 | 使用 pystray 实现,支持隐藏窗口 / 恢复窗口 / 启动全部 / 退出 |
| 启动项管理 | 支持添加 / 删除 / 拖拽排序,配置持久化到 programs.json |
| 多类型启动 | 支持本地程序(exe / 脚本)和网址(自动调用浏览器) |
| 精细化控制 | 延迟启动、重试机制、启用 / 禁用、是否参与'启动全部' |
| 日志记录 | 实时输出启动日志,包含耗时、状态(成功 / 失败) |
3. 关键方法说明
launch_program():核心启动逻辑,区分文件 / 网址类型,处理延迟、重试start_all():批量启动(仅启动'启用 + 加入全部'的项)drag_sort:列表拖拽排序(通过order字段维护顺序)load/save_data():配置文件的读写,兼容旧数据格式
优化 / 扩展建议
1. 功能增强
- 批量操作:支持多选启动项,批量设置延迟 / 启用状态
- 进程监控:增加启动后进程状态检测(是否存活)
- 自定义浏览器:网址启动时允许选择默认浏览器
- 环境变量支持:启动路径支持解析环境变量(如
%USERPROFILE%) - 快捷键:添加常用操作快捷键(如回车启动选中、Del 删除)
2. 体验优化
- 启动项分组:支持按分类管理启动项(如工作 / 娱乐)
- 搜索过滤:列表添加搜索框,快速定位启动项
- 图标显示:列表项显示程序 / 网址图标(提升辨识度)
- 日志清理:添加日志清空 / 自动滚动 / 保存日志文件功能
- 错误提示:启动失败时增加更详细的错误码 / 原因
3. 稳定性优化
# 示例:启动子进程时增加更多容错
():
:
ptype == :
browsers = [webbrowser.get(), webbrowser.get(), webbrowser.get()]
browser browsers:
:
success = browser.(path)
success:
:
:
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(
path,
cwd=os.path.dirname(path),
startupinfo=startupinfo,
creationflags=subprocess.CREATE_NEW_CONSOLE
)

