轻量级 Windows 桌面工具,实时显示 GPU / CPU 温度,透明悬浮窗 + 系统托盘,不影响正常操作。
┌─────────────────────────┐
│ GPU 45° 12% 2048MB │
│ │ │
│ CPU 52° │
└─────────────────────────┘
- 悬浮窗始终置顶,无边框透明背景
- 可拖动定位 / 锁定后鼠标穿透
- 系统托盘常驻,右键菜单控制
| 功能 | 说明 |
|---|---|
| GPU 温度监控 | 通过 NVIDIA NVML 读取实时温度、使用率、显存 |
| CPU 温度监控 | 通过 LibreHardwareMonitor 读取 CPU 核心温度 |
| 无边框悬浮窗 | 透明背景、始终置顶、SizeToContent 自适应 |
| 拖动定位 | 未锁定时左键拖动,位置自动保存 |
| 鼠标穿透 | 锁定后启用 WS_EX_TRANSPARENT,不影响下层窗口 |
| 系统托盘 | 最小化到托盘,右键菜单:解锁 / 锁定 / 退出 |
| 位置记忆 | 关闭时保存位置到 config.json,下次启动恢复 |
| 温度变色 | 白 → 黄 → 橙 → 红,直观显示温度状态 |
- 系统:Windows 10 / 11(64-bit)
- 运行时:.NET 8.0 Desktop Runtime(下载)
- GPU:NVIDIA 显卡 + 驱动已安装(
nvml.dll) - 权限:必须以管理员身份运行(CPU 温度需要内核驱动访问)
从 Releases 下载最新版本:
GpuOverlay.exe
2r.ico
右键 → 以管理员身份运行。
git clone https://github.com/gearlam/GpuOverlay.git
cd GpuOverlay
dotnet publish -c Release发布输出:bin\Release\net8.0-windows\win-x64\publish\
| 操作 | 效果 |
|---|---|
| 左键拖动 | 移动悬浮窗位置(未锁定时) |
| 右键点击悬浮窗 | 打开窗口菜单(锁定 / 退出) |
| 右键点击托盘图标 | 打开托盘菜单(解锁 / 锁定 / 退出) |
| 双击托盘图标 | 解锁并激活窗口 |
- 未锁定:可拖动,鼠标正常交互
- 锁定后:不可拖动,鼠标穿透(
WS_EX_TRANSPARENT),悬浮窗变半透明
GpuOverlay/
├── MainWindow.xaml # 悬浮窗 UI
├── MainWindow.xaml.cs # 拖动、锁定、托盘、刷新逻辑
├── Nvml.cs # NVIDIA NVML P/Invoke 封装
├── HardwareMonitor.cs # CPU 温度读取(LibreHardwareMonitor)
├── AppConfig.cs # 配置加载 / 保存
├── App.xaml # 应用入口
├── config.json # 位置和锁定状态
├── 2r.ico # 托盘图标
├── .gitignore # Git 忽略规则
├── LICENSE # MIT 许可证
└── README.md # 项目说明
- C# + WPF(.NET 8)
- NVIDIA NVML(P/Invoke)— GPU 温度 / 使用率 / 显存
- LibreHardwareMonitor — CPU 核心温度(通过内核驱动读取 MSR 寄存器)
- WinForms NotifyIcon — 系统托盘
- Win32 API(
SetWindowLongPtr)— 鼠标穿透
config.json 示例:
{
"Left": 100.0,
"Top": 100.0,
"IsLocked": false,
"Opacity": 1.0,
"FontSize": 36.0
}- 必须以管理员身份运行(LibreHardwareMonitor 需要内核驱动访问硬件)
- 右键 exe → 以管理员身份运行
- 确认已安装 NVIDIA 显卡驱动
- 检查
nvml.dll是否存在于系统路径
- 确认
2r.ico与 exe 在同一目录
- 通常是权限不足导致 LibreHardwareMonitor 无法初始化
- 以管理员身份运行即可
MIT License