Repository navigation
Releases: leerogerstheman/SysMonitorBar
Releases · leerogerstheman/SysMonitorBar
Release list
v1.1.0 — 背景可调至完全透明
背景现在可以调成完全透明了
外观页新增 「背景不透明度」 滑块(0 ~ 100%)。拉到 0%,底板彻底消失,只剩文字浮在桌面上;想要半透明就停在 40~80% 之间。
底层换成了 UpdateLayeredWindow + 逐像素 alpha 渲染,所以:
- 半透明是真的半透明 —— 能看见后面的窗口,不是靠整体降透明度糊出来的
- 圆角在透明背景下依然带抗锯齿,没有锯齿边、也没有彩边
- 文字始终是纯色不透明的,不会被背景设置带着一起变淡
两个滑块的区别
| 滑块 | 范围 | 作用 |
|---|---|---|
| 背景不透明度 | 0 ~ 100% | 只影响底板,文字保持清晰 |
| 整体不透明度 | 20 ~ 100% | 连文字一起淡化 |
两者相乘生效。想做 HUD 那种「只有字、没有底」的效果,把「背景不透明度」拉到 0% 就行。
修复
- 改背景色会清掉背景不透明度。 取色对话框只返回 RGB,旧代码写回时用了
Color.FromArgb(255, ...),把 alpha 强行拉满 —— 用户设好的透明度会凭空消失,config.json里变成#FF000000。现在取色会保留原有 alpha。 - 背景板只画了一部分、文字挤在右边。 窗口位置和尺寸原先由
SetBounds和UpdateLayeredWindow各设一次,而 WinForms 缓存的Bounds不会跟着同步,两边一旦不一致就会出现「窗口 746px、底板只画 583px」。现在尺寸和位置只由UpdateLayeredWindow决定。 - 首帧渲染发生在窗口句柄创建之前,导致窗口停留在 WinForms 默认的 300x300,内容被裁掉一截。
变更
- 不再用
Form.Opacity做淡化(它与UpdateLayeredWindow互斥),整体不透明度改为在渲染时乘进每个像素的 alpha。鼠标移入淡化的手感和时长不变。 - 圆角不再通过窗口
Region裁剪,改为直接画进像素,避免裁掉抗锯齿边缘。 - 透明背景下文字改用灰度抗锯齿(ClearType 次像素抗锯齿在透明背景上会出彩边),文字观感会略有变化。
- 整体不透明度的下限由 20% 放宽到 5%。
兼容性
- 配置文件格式向后兼容,
config.json无需改动。 BackColor的#AARRGGBB写法此前虽已存在,但 alpha 字节一直被忽略(强制不透明);1.1.0 起它真正生效。如果你的配置是#FF......(不透明),升级后观感不变。
安装
下载下面的 SysMonitorBar-1.1.0-win-x64.zip,解压后双击 启动-管理员.cmd。
需要 .NET 8 桌面运行时(只装 Runtime,不用 SDK)。
- 完整更新日志见 CHANGELOG.md
- 与上一版的差异:v1.0.0...v1.1.0
顶部硬件监控条 v1.0.0
顶部硬件监控条 v1.0.0
在屏幕顶部正中用 1~2 行显示实时硬件状态的小工具。显示哪些数据、放第几行、什么顺序、
叫什么名字,全部在设置界面里点;默认鼠标穿透不挡操作,鼠标移上去时强烈淡化。
能显示什么
- CPU — 温度(读 MSR,读不到时退回 ACPI 热区)、占用率、频率、功耗、风扇转速
- GPU — 温度、热点温度、占用率、功耗、风扇转速、显存占用(走 NVAPI,不需要管理员)
- 内存 / 显存 — 已用 / 总量、占用率
- 网速 — 实时上下行,自动挑流量最大的网卡(也可指定或全部合计)
- 显示 — 显示器刷新率,以及用 DXGI 桌面复制实测的实时帧率
- 任意传感器 — LibreHardwareMonitor 枚举到的每个传感器都能单独加到条上
安装
- 下载下面的
SysMonitorBar-1.0.0-win-x64.zip,解压到任意目录 - 安装 .NET 8 桌面运行时(只装 Runtime,不需要 SDK)
- 双击
启动-管理员.cmd
也可以双击
启动.cmd免提权运行,CPU 温度 / GPU / 内存 / 显存 / 网速 / 刷新率 / 帧率 都正常,
只有依赖内核驱动的那几项读数会缺席。
已知限制
- CPU 温度:读 MSR 需要管理员权限、且内核驱动能成功加载。两者都不满足时会自动退回 ACPI 热区(免管理员,但读的是主板热敏电阻,数值偏低、变化也更迟钝)
- 风扇转速:只有硬件真的暴露了传感器才会出现。大量笔记本(包括开发这台 i9-11900H + RTX 3060 Laptop)压根没有风扇传感器,
nvidia-smi --query-gpu=fan.speed返回[N/A]是正常的 - 实时帧率:桌面完全静止时显示 0;独占全屏游戏和远程桌面会话下测不到(此时该项自动隐藏)。想要一直有数就用「刷新率」
- 界面目前只有中文(每一项的显示名都可以自己改成任意文字)
实测数据
在 Windows 11 24H2 (build 26200) / i9-11900H + RTX 3060 Laptop 上验证:
| 项目 | 数值 |
|---|---|
| 内存占用 | 约 130–160 MB(其中自身代码的托管堆只有 5 MB,其余是 .NET 运行时 + LibreHardwareMonitor + D3D11) |
| CPU 占用 | 约单核 4.7%(全机 0.29%) |
| 分配速率 | 162 KB/s,22 秒内 Gen0 GC 0 次 |
| 长时间稳定性 | 10 分钟采样,私有字节恒定 105.2 MB、句柄稳定,无泄漏 |
说明
- 框架依赖发布,所以需要 .NET 8 桌面运行时;不想要这个依赖可以自行
dotnet publish --self-contained,产物约 150 MB - 完整文档、配置项说明、以及开发过程中踩过的坑(COM 对象生命周期、
CreateParams覆盖扩展样式、批处理编码…)都在 README


