Skip to content

Releases: leerogerstheman/SysMonitorBar

v1.1.0 — 背景可调至完全透明

Choose a tag to compare

@leerogerstheman leerogerstheman released this 29 Sep 17:33

背景现在可以调成完全透明了

外观页新增 「背景不透明度」 滑块(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)。

顶部硬件监控条 v1.0.0

Choose a tag to compare

@leerogerstheman leerogerstheman released this 29 Sep 09:55

顶部硬件监控条 v1.0.0

在屏幕顶部正中用 1~2 行显示实时硬件状态的小工具。显示哪些数据、放第几行、什么顺序、
叫什么名字,全部在设置界面里点;默认鼠标穿透不挡操作,鼠标移上去时强烈淡化。

效果图

能显示什么

  • CPU — 温度(读 MSR,读不到时退回 ACPI 热区)、占用率、频率、功耗、风扇转速
  • GPU — 温度、热点温度、占用率、功耗、风扇转速、显存占用(走 NVAPI,不需要管理员)
  • 内存 / 显存 — 已用 / 总量、占用率
  • 网速 — 实时上下行,自动挑流量最大的网卡(也可指定或全部合计)
  • 显示 — 显示器刷新率,以及用 DXGI 桌面复制实测的实时帧率
  • 任意传感器 — LibreHardwareMonitor 枚举到的每个传感器都能单独加到条上

安装

  1. 下载下面的 SysMonitorBar-1.0.0-win-x64.zip,解压到任意目录
  2. 安装 .NET 8 桌面运行时(只装 Runtime,不需要 SDK)
  3. 双击 启动-管理员.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