为什么又造了一个轮子
Windows 上不缺系统监控工具。TrafficMonitor 做得很成熟,任务管理器也够用。但我自己有两个具体的痒点:
1. 任务管理器看实时网速要点两下才出来,而且不能常驻
2. 常见的网速悬浮窗只显示网速,想看 CPU / GPU / 硬件信息得再开一个
所以我写了个把这几样合在一起的,做成单文件 exe,16.7 MB,双击就跑。

做的时候踩的几个坑
GPU 利用率不需要装驱动
很多人以为读 GPU 占用率要装厂商 SDK 或者驱动,其实 Windows 自带 PDH(Performance Data Helper)性能计数器里就有,路径是 \GPU Engine(*)\Utilization Percentage。
麻烦的是这个计数器会为每个进程、每个引擎各返回一条,得自己按 pid_xxx_luid_xxx_phys_xxx_eng_xxx 归并求和。而且 Intel 核显、NVIDIA、AMD 的命名规则不完全一致,要分别处理。
好处是完全不需要管理员权限,也不用装任何东西。
硬件厂商名在不同系统语言下格式不一样
这是最花时间的一块。WMI 查 Win32_Processor 拿到的 Manufacturer,在英文系统是 GenuineIntel,在中文系统可能是「正英特尔」或者其他写法。
还有一类是占位符:某些虚拟磁盘、通用驱动会返回「(标准磁盘驱动器)」「(标准键盘)」这种,必须过滤掉,否则硬件信息页会很难看。
我的做法是建一张厂商名映射表,把常见的中英文变体都收进去,识别不出来就原样显示。切换界面语言时再套一层翻译,所以切英文只显示 Intel,切中文显示「英特尔 (Intel)」。

温度为什么单独拆了个进程
读 CPU 温度要访问 MSR 寄存器,这是内核级操作,必须有管理员权限。
如果把这段代码放进主程序,那整个程序都得提权运行 —— 一个看网速的小工具要 UAC 弹窗,体验很差。
所以拆成了计划任务形式的守护进程:主程序保持普通权限,需要温度时跟守护进程通信。装失败也不影响其他功能,温度那栏显示 -- 而已。
界面
6 套皮肤,12 项颜色能自己调,也能把自己的照片设成背景。
8 种界面语言,默认跟随系统,切换立即生效。(做多语言的时候发现,Tkinter 的字体渲染在各语言下差异很大,日文和韩文的行高要单独调,否则文字会被裁。)
悬浮窗支持置顶、调透明度、鼠标穿透。托盘常驻,点关闭是隐藏不是退出。

免费版和完整版
差两项:CPU 温度、逐进程网速。其余完全一致。
免费版永久免费,无广告,没有试用期倒计时。完整版 $9.99 买断,不订阅。
写这个不是为了赚钱,是想验证一下「不投广告、不做增长,只靠产品本身能不能有人用」。所以定价定得很低。
下载
https://github.com/Leooo96/PulseDesk
单文件 exe,不用登录,不用装运行库。
个人项目没买代码签名证书,首次运行 SmartScreen 会提示,点「更多信息 → 仍要运行」。
