Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TrayHush · 安静片刻

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 列、事件绑定、SplitContainerSplitterDistance/MinSize 都放在 MainForm.cs 代码侧,避免 VS 设计器重新生成时丢失。
  • 托盘行为:关闭主窗体只是隐藏到托盘;从托盘菜单"退出"才真正结束进程。
  • 最小切换间隔 MinIntervalSeconds 默认 2 秒(配置可调);受 Win11 资源管理器约 5 秒轮询限制,实际肉眼节奏可能略缓。

About

定时将托盘图标设置为隐藏, 实现勿扰的效果

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages