一个基于 WinUI 3 的轻量托盘程序:读取笔记本内置屏幕亮度,用一次线性函数映射后,通过 DDC/CI VCP 0x10 设置外接显示器亮度。
- Windows 10 1809(17763)或 Windows 11
- .NET 8 SDK
- 支持 DDC/CI 的外接显示器;在显示器 OSD 中打开 DDC/CI
dotnet restore
dotnet build -c Debug -p:Platform=x64
dotnet run -c Debug -p:Platform=x64发布可直接运行的目录:
dotnet publish -c Release -p:Platform=x64 -p:PublishSingleFile=false生成结果位于 bin\x64\Release\net8.0-windows10.0.19041.0\publish。
程序启动后会显示 Mica 深色设置窗口并在通知区域创建太阳亮度图标。关闭窗口会隐藏到托盘,双击图标或右键“打开设置”可恢复;右键“退出”才会结束进程。托盘右键菜单直接使用 Windows 原生菜单,外观、阴影、圆角和缩放由 Windows 11 管理。悬停托盘图标时,Windows 原生提示气泡会显示笔记本和外接显示器的当前亮度。项目启用了 Windows App SDK self-contained 模式,发布目录会携带所需运行时。
默认映射为 30%..100% -> 0%..100%,输入范围外的值会钳制到 0 或 100。亮度变化优先通过 WmiMonitorBrightnessEvent 事件接收;不提供该事件的固件使用 5 秒一次的低频兜底读取。外接显示器使用 smoothstep 曲线平滑过渡,动画时长可在 0..500 ms 间调节,步进 10 ms,默认 200 ms。
映射范围、动画时长、自动同步和开机启动选项会保存到当前用户注册表;开机启动使用 --minimized 参数,启动后直接驻留托盘。
程序通过 Windows dxva2.dll 枚举支持 DDC/CI 的物理显示器,并读取 VCP 代码 0x10。因此附件中显示为 DDC/CI (HL) 的显示器可以直接使用;如果 OSD 关闭 DDC/CI,列表会提示未找到可控制的显示器。