Windows 11 系统托盘图标定时勿扰工具。按你设定的时段策略,自动把指定应用的托盘图标在「显示 / 隐藏」之间切换。
对应系统设置:设置 → 个性化 → 任务栏 → 其他系统托盘图标 中每个应用的开关。
- 多时段策略:每个应用可配置多个时段
- 时段内循环:「显示 N 秒 / 隐藏 M 秒」交替(最小 2 秒)
- 跨天时段:结束时间 ≤ 开始时间视为跨天(如
23:00→08:00) - 开始/结束状态:进入与退出时段时的瞬时显示/隐藏状态;无时段覆盖时维持现状
- 时段启用开关:可临时禁用某个时段而不删除
- 手动操作:"立即显示 / 立即隐藏"按钮
- 智能应用列表:图标 + 应用名 + 运行状态 + 规则数
- 默认排序:有规则 → 运行中 → 名称字母序
- 可点列头排序
- 开机自启
- 单文件 exe(Costura.Fody 打包,便携)
通过修改注册表实现,免重启 explorer、免管理员权限:
HKCU\Control Panel\NotifyIconSettings\<数字ID>
IsPromoted 1 = 显示在任务栏 0 = 隐藏到溢出区
ExecutablePath (按 exe 文件名匹配应用)
改写 IsPromoted 后,Win11 资源管理器约 5 秒内自动轮询生效。同一应用的多个注册表子键(不同路径/版本/GUID)按 exe 文件名 合并与同步设置。
路径若以 Known Folder GUID 形式存储(如 {7C5A40EF-...}\WXWork\WXWork.exe),会通过 SHGetKnownFolderPath 自动解析为真实路径,以正确读取图标与应用名。
- Windows 11
- .NET Framework 4.7+(Win11 自带 4.8,无需额外安装运行时)
dotnet build -c Release输出单文件:TrayHush/bin/Release/net47/TrayHush.exe
可直接复制到任意目录运行。
config.json 位于 exe 同目录,JSON 格式。仅"设过规则的应用"才会写入。文件损坏时会自动备份为 *.bak 并重置为默认。
TrayHush/
├── Models/ TrayState, TimeWindow, Rule, AppConfig
├── Scheduling/ WindowMatcher, CycleCalculator, Scheduler (核心逻辑,有单测)
├── Registry/ ITrayIconRegistry, TrayIconRegistry, KnownFolders, TrayAppInfo
├── Config/ ConfigStore (JSON 持久化)
├── Scan/ ScanService (扫描 + 去重 + 补全名称/运行状态)
├── Autostart/ AutoStartService (HKCU\Run)
├── UI/ MainForm, AppTrayIcon, AppContext
├── Program.cs 入口
└── AppIcon.cs 嵌入图标加载
TrayHush.Tests/ NUnit 单元测试(纯逻辑模块)
架构:三层(UI / 服务 / 基础设施)。1 秒轮询调度器,只在状态变化时写注册表;每 30 秒重置一次以防 explorer 重启后状态丢失。
- 设计器友好:ListView 列、事件绑定、
SplitContainer的SplitterDistance/MinSize都放在MainForm.cs代码侧,避免 VS 设计器重新生成时丢失。 - 托盘行为:关闭主窗体只是隐藏到托盘;从托盘菜单"退出"才真正结束进程。
- 最小切换间隔
MinIntervalSeconds默认 2 秒(配置可调);受 Win11 资源管理器约 5 秒轮询限制,实际肉眼节奏可能略缓。