一个常驻后台的小工具:自动监控东南大学劳动教育选课页,发现新课程就立刻用桌面通知和微信提醒你, 无需一直开着网页。装好后它待在系统托盘里,占用很小,只在需要时才用到浏览器。
- 后台自动监控,不用打开任何网页
- 新课程即时提醒:Windows 桌面通知 + 微信(PushPlus,可选)
- 登录过期自动重新登录,通常无需手动操作
- 按开课地点、劳动类型筛选,已推送的课程不重复提醒
- 每日运行汇总
- 自动选课(可选,默认关闭)
- 托盘常驻、开机自启
- 原生实现,无 GC/无运行时:单个约 3 MB 的可执行文件,不打包浏览器内核
下载 seu-labor-setup-1.2.0.exe,双击安装:
- 免管理员,按当前用户安装
- 自动创建开始菜单快捷方式(桌面快捷方式可选)
- 安装完成后默认启动并打开设置向导
- 卸载请到「设置 → 应用」;账号与设置会保留
- 启动后,右下角托盘会出现程序图标。
- 跟随设置向导填写一卡通号与密码、选择筛选条件与通知方式,并完成一次登录。
- 首次登录(或换网络出口)可能需要短信验证码,之后无需再手动登录。
登录窗口与选课页会自动使用系统里已安装的 Chromium 内核浏览器(按 Edge → Chrome → 其他
Chromium 的顺序探测,也可在 config.json 的 browser.path 中手动指定),不会额外下载浏览器。
- Windows 桌面通知:默认开启,点击可直接打开选课页。
- 微信推送:可选,填入 PushPlus Token 即可。
- 右键托盘图标 →「设置向导」,可随时修改账号、筛选、通知,或开关开机自启 / 自动选课,改动即时生效。
- 需要安装浏览器或运行时吗? 设置界面用系统自带的 WebView2;登录窗口 / 选课页会自动使用已安装的 Chromium 浏览器(Edge/Chrome 等),也可用
browser.path指定。 - 会很占资源吗? 常驻进程很小,浏览器仅在需要时启动。
- 会自动选课吗? 默认关闭,需要手动开启。
- 卸载后设置还在吗? 在,保存在本机用户目录。
需要 Rust(rustup,x86_64-pc-windows-gnu 工具链);打包安装包另需 Inno Setup 6。
依赖的可复用项目 rust-webui-kit 走相对路径,需与本仓库同级检出:
git clone https://github.com/zz6zz666/rust-webui-kit ..\rust-webui-kit.\build.ps1 -Version 1.2.0 # 主程序: release\seu-labor.exe
.\package.ps1 # 安装包: release\seu-labor-setup-1.2.0.exe
WebView2Loader.dll(随vendor\提供)会与主程序一起分发,供系统 WebView2 使用。
程序平时只发普通网络请求,几乎不启动浏览器。
- 轮询:课程列表本身就是网页文本,直接请求并解析,无需常驻浏览器。
- 自动重登:登录失效时,用保存的账号密码在后台自动重新登录,全程不打开浏览器; 仅当需要验证码或短信时,才会弹出登录窗口。
- 按需调用浏览器:只有手动登录与查看选课页时才启动浏览器(自动选课走纯 HTTP)。
- 设置界面:由系统自带的 WebView2 渲染,轻快且无额外依赖。
所有重资源都取自系统,程序本体只是一个很小的可执行文件;账号与设置仅保存在本机。
通用机制放在一个独立的可复用项目 rust-webui-kit(与本仓库同级,通过相对路径依赖),
主程序只保留学校相关流程与页面:
winkit:通用 Win32 小工具(进程 DPI 感知与缩放、从.ico生成图标并设为窗口图标)。traykit:托盘图标 + 自绘 Fluent 风格弹窗菜单;菜单内容由宿主以数据提供。browserhost:定位、启动并驱动系统 Chromium(CDP),管理独立配置目录与 Cookie 注入。webmsg:本地回环 HTTP 桥,把宿主 API 暴露给被托管的网页(请求 / 响应 / 事件信封)。websurface:多窗口 Web UI 宿主,WebView2 引擎 + 借用 Chromium 兜底。
依赖方向:seu-labor → websurface → { webmsg、browserhost、winkit };traykit → winkit。
本项目采用 MIT 许可。