Skip to content
yftx888Public

About

轻量的 Windows 桌面悬浮监控:电池功耗与续航、CPU/GPU/内存占用与功耗、网速、真实延迟与断网提醒。原生 C++ / Direct2D,迷你模式约 0.1% CPU。

Topics

Resources

Stars

128 stars

Watchers

0 watching

Forks

Repository files navigation

Pulse

English | 简体中文

Pulse 是 Windows 桌面悬浮小组件,也可以嵌入任务栏:一个静态链接的 Pulse.exe,用原生 C++17、Win32 和 Direct2D 显示硬件、电池与网络状态。

下载最新版 · Windows 10 / 11 64 位 · 免安装

Pulse 完整模式

Pulse 迷你模式

功能

完整模式默认自上而下显示:

  • 硬件四格:CPU、GPU(3D 引擎占用)、内存显示占用;处理器、CPU 和内存功耗来自 Energy Meter 的 package、pp0 和 DRAM。检测到 NVIDIA 独显且系统报告的设备电源状态为 D0 时,GPU 格显示独显功耗(来自显卡驱动自带的 NVML,无需管理员);独显休眠时显示「独显休眠」,并停止调用 NVML。AMD 独显暂不支持;没有 NVIDIA 或 NVML 读不到时,仍显示处理器图形域 pp1 功耗。pp1 不是独显整板瓦数,GPU 占用也可能来自另一块显卡。计数器缺失、没有对应实例、正在采样或读取失败时显示「--」和简短原因,不会写成 0 W。
  • 电池:完整模式显示控制面板当前电源计划的实际名称(「电源计划 · …」);使用系统「平衡」计划且设置了非平衡的 Windows 电源模式时,显示「电源模式 · 最佳性能 / 最佳能效 / 更长续航」。系统自定义计划名称保持原文。节电模式是旁边的短标记,不代替计划名。充放电功率、平滑续航或充满时间、到 20% 和拔电后平均功耗只在确认的纯电池放电或正常充电时计算。外接电源同时电池放电时标为「插电放电」,电池卡片显示净放电,不判断适配器是否故障。放电功率低于 1 W 或持续不到 10 秒时按已接通电源显示;确认后短暂低于阈值需持续 5 秒才退出,拔电、充电或读取失败立即退出。若启动时已在纯电池放电,平均功耗从组件启动后计算。
  • 网络:只统计物理网卡的上下行网速,醒目显示 HTTP 延迟和断网状态。
  • 进程 CPU 占用前三,不含 Pulse 自身;组件自身占用另列。

迷你模式为单行,可显示电量、续航或充满时间、充电闪电标记和外接电源标记。只有确认外接电源离线且电池正在放电时,「总功耗」和「功耗走势图」才标为「整机」。插电时(包括外接电源下电池仍在放电)标为「处理器」,显示芯片 package 功耗。外接电源状态未知时最多标「电池」或未知,不标「整机」。来源切换时走势图断开,不把 package 和电池功率连成一条。硬件四格的第四格始终标为「处理器」。

任务栏模式把两行数据嵌入任务栏,不占桌面空间,默认显示网速、续航/充满、功率、CPU、内存和延迟:

  • 默认「自动」:放在任务栏右侧、时间旁边;Windows 11 任务栏图标居中、打开的程序较多会挡住图标时,自动移到「开始」按钮左侧,并给左侧的小组件留出位置;两边空间都不够时留在原处,不来回跳动。也可在右键菜单「任务栏位置」固定在左侧或右侧。
  • 默认文字颜色跟随任务栏深浅色;续航在放电时显示剩余时间,充电时显示充满还需时间。
  • 左键单击显示或收起完整面板,右键弹出菜单;资源管理器重启后自动重新嵌入。
  • 竖向或侧边任务栏暂不支持,无法嵌入时临时显示迷你悬浮窗,并约每 30 秒重试。Windows 10 任务栏未经实测。

右键窗口、任务栏数据或托盘图标,在「显示内容」中分别设置三种模式的组件:

模式 可选组件
完整模式 硬件四格、电池与充电、功耗走势图、网络、进程前三、磁盘读写速度、系统盘占用、系统信息、显卡(显存与温度)、Wi-Fi、电池健康、帧数
迷你模式 电量 %、续航/充满、总功耗、CPU %、内存 %、GPU %、GPU 温度、网速、延迟、磁盘读写、CPU 频率、FPS
任务栏模式 与迷你模式相同

可选指标只在勾选后采集,取消即停止;CPU、内存、电池、网速等基础采样始终运行。网络探测在开启断网提醒或界面显示延迟时运行,两者都不需要时停止。「系统信息」包含 CPU 频率、内存已用/总量、进程数和开机时长。

其他功能:

  • 前台程序帧数(FPS):基于 ETW 的 DXGI/D3D9 Present 事件,需要管理员权限。勾选后若权限不足,菜单会出现「以管理员身份重启(显示帧数需要)」。部分程序可能无法读到帧数。
  • 显卡温度:与任务管理器同一数据来源,无需管理员权限;多块显卡时显示最高的一块。独显(NVIDIA / AMD)和 AMD 核显通常可用,Intel 核显不提供温度时不显示。不会唤醒休眠中的独显。CPU 温度需要安装内核驱动,暂不提供。
  • 完整模式刷新间隔可选 0.5 / 1 / 2 秒,默认 1 秒;迷你和任务栏可选 1 / 2 / 5 秒,默认 2 秒。任务栏详情面板展开时使用完整模式间隔。
  • 迷你悬浮窗不透明度可选 100%(默认)/ 90% / 80% / 70% / 60%。三种模式均支持全选或全不选组件;迷你和任务栏分别支持数值文字取色和组件顺序调整,告警颜色保留。
  • 延迟「较慢」阈值可选 50 / 100 / 150 / 200 / 300 / 500 / 800 ms,默认 500 ms。
  • 断网与恢复提醒卡片,约 8 秒后自动淡出;鼠标悬停时暂停,移开后约 3 秒淡出。提醒和提示音可分别关闭,睡眠不算断网。
  • 界面大小 80%–200%,支持 Ctrl + 滚轮缩放。
  • 界面支持简体中文 / English,可在右键菜单「语言 / Language」切换,默认跟随系统显示语言。
  • 深色右键菜单、托盘图标、窗口置顶、开机自启和恢复默认组件。

截图

完整模式:

Pulse 完整模式

迷你模式:

Pulse 迷你模式

任务栏模式(浅色任务栏,充电中):

Pulse 任务栏模式

系统要求

  • Windows 10 或 Windows 11,64 位。
  • 普通用户权限即可运行;只有帧数功能需要管理员权限。
  • 硬件功耗来自性能计数器 Energy Meter(RAPL),无需管理员。完整模式优先对 \Energy Meter(*)\Energy 做差分(原始单位 pWh,瓦特 = 差值 × 3.6e-9 / 间隔秒),不可用时回退到 \Energy Meter(*)\Power(mW / 1000);迷你模式直接使用 Power。完整模式启用硬件四格时,系统报告为 D0 的 NVIDIA 独显改用 NVML;迷你和任务栏模式不采集独显功耗、不加载 NVML。AMD ADLX 暂不支持,也不把 D3DKMT 适配器性能数据里的 Power(单位是 0.1%)当成瓦数。
  • 没有这组计数器、没有匹配的 package / pp0 / pp1 / DRAM 实例,或某次读取失败时,相关功耗显示为未知(--)和简短原因。一次失败或预热不会被当成这台机器永久没有该硬件。内存功耗需要 DRAM 实例。电池充放电功率由 Windows 电池接口读取;未知速率不会显示成 0 W。

安装

下载 zip 并解压后,运行 scripts\install.cmd。脚本会:

  1. 若 Pulse 正在运行,先退出它。
  2. 把 Pulse.exe 复制到 %LOCALAPPDATA%\Pulse。
  3. 创建当前用户的开始菜单快捷方式。
  4. 按下面的参数决定是否创建桌面快捷方式和开机自启。
  5. 启动安装后的 Pulse。

安装和普通运行不需要管理员,帧数功能除外。也可以解压后直接运行 Pulse.exe,无需安装;配置仍写在 %LOCALAPPDATA%\Pulse。

install.ps1 在脚本同级和上一级查找 Pulse.exe。从本仓库运行时,请先编译出根目录的 Pulse.exe。

参数 作用
(无参数) 询问是否创建桌面快捷方式、是否开机自启
-Desktop 创建桌面快捷方式,不再询问
-Autostart 写入开机自启,不再询问
-Quiet 不询问。未同时指定的项不会创建

示例:

scripts\install.cmd
scripts\install.cmd -Desktop -Autostart
scripts\install.cmd -Quiet

开机自启写在当前用户的 HKCU\Software\Microsoft\Windows\CurrentVersion\Run,值名 Pulse,内容是带引号的 Pulse.exe 完整路径。这与程序菜单里的「开机自启」是同一项。程序菜单写入当前正在运行的那一份程序路径;安装脚本写入 %LOCALAPPDATA%\Pulse\Pulse.exe。

卸载

运行 scripts\uninstall.cmd。脚本会仅退出通过窗口类名或版本信息识别为本程序的 Pulse 进程,跳过其他同名程序,删除上述 Run 值,并删除开始菜单和桌面上目标为 Pulse.exe 或已失效的 Pulse.lnk。

窗口位置、模式、置顶、显示内容、组件顺序与文字颜色、迷你不透明度、任务栏位置、两组刷新间隔、界面大小、界面语言、延迟较慢阈值、断网提醒和提示音设置保存在 %LOCALAPPDATA%\Pulse\settings.ini。网络探测和帧数诊断等日志在 %LOCALAPPDATA%\Pulse\pulse_net.log,超过 1 MB 时改名为 pulse_net.log.1 并重新开始,与安装目录同属一个文件夹。%APPDATA%(漫游目录)下不写配置;卸载脚本仍会检查那里是否存在同名配置或日志。

刷新间隔使用 [Window] refresh_ms=500|1000|2000(默认 1000)与 mini_refresh_ms=1000|2000|5000(默认 2000);迷你不透明度使用 [Compact] opacity=100|90|80|70|60(默认 100)。[Compact] 和 [Taskbar] 各自保存 order(以逗号分隔的组件 key)和 color_<key>=#RRGGBB(例如 color_cpu=#38BDF8)。顺序中的未知或重复 key 会被忽略,缺少的组件按各模式默认顺序补到末尾;颜色缺失或无效时使用默认色,恢复默认颜色会删除对应颜色键。

发现这些文件时,脚本会询问是否一并删除。选 Y 会删除整个 %LOCALAPPDATA%\Pulse 目录,并清理检测到的漫游目录同名文件;选 N 只删除 Pulse.exe 和快捷方式,保留配置与日志。未发现配置或日志时,默认删除安装目录。

参数 作用
(无参数) 若存在配置或日志,询问是否删除
-KeepConfig 不询问,保留配置和日志
-RemoveConfig 不询问,删除配置、日志和安装目录

使用说明

  • 拖动窗口空白处移动,位置会保存。
  • 双击窗口空白处,或点击模式按钮,在完整模式和迷你模式之间切换。
  • 置顶按钮切换「窗口置顶」,默认开启。
  • 最小化会暂停界面采样;左键单击托盘图标可隐藏或显示窗口。隐藏时同样暂停界面采样,开启断网提醒时网络探测继续;再次显示后恢复采样。
  • 任务栏模式下,左键单击任务栏上的数据或托盘图标,显示或收起完整面板。
  • 关闭按钮直接退出程序。
  • 在窗口内按 Ctrl + 滚轮,每格缩放 10 个百分点,范围为 80%–200%。内容超出屏幕时可用普通滚轮浏览。

窗口、任务栏数据和托盘共用以下右键菜单:

菜单项 作用
完整模式 / 迷你模式 / 任务栏模式 切换显示模式
任务栏位置 自动(默认)/ 右侧 / 左侧。右侧在时间旁边,左侧在「开始」按钮左边;选右侧或左侧后固定不动
界面大小 80% / 100%(默认)/ 125% / 150% / 175% / 200%
迷你不透明度 100%(默认)/ 90% / 80% / 70% / 60%,仅影响迷你悬浮窗(含任务栏挂接失败时的迷你窗)
语言 / Language 切换界面语言(中文 / English),默认跟随系统语言
刷新间隔 两组独立设置:完整模式 0.5 / 1(默认)/ 2 秒;迷你 / 任务栏 1 / 2(默认)/ 5 秒
延迟较慢阈值 50 / 100 / 150 / 200 / 300 / 500(默认)/ 800 ms
断网提醒 开关断网与恢复提醒卡片,默认开启
提醒提示音 单独开关提示音,默认开启;关闭断网提醒后此项不可用
显示内容 → 完整模式 / 迷你模式 / 任务栏模式 分别勾选组件,支持全选(含帧数)或全不选
显示内容 → 迷你模式 / 任务栏模式 → 调整顺序 在已勾选组件之间上移、下移、移到最前或最后;勾选列表也按此顺序显示
显示内容 → 迷你模式 / 任务栏模式 → 文字颜色 分别为已勾选组件设置数值文字颜色,保留标签和告警色;恢复默认颜色只影响该模式
显示内容 → 恢复默认 恢复三种模式的组件勾选及迷你 / 任务栏顺序,保留颜色和不透明度
窗口置顶 开关置顶
开机自启 开关当前用户的开机自启
功耗诊断 另开进程采集约 1 秒,把计划、电池速率和 Energy Meter 实例写入 %LOCALAPPDATA%\Pulse\power-diagnostics.txt 并打开。不上传,不改设置
打开日志 打开本机日志
以管理员身份重启(显示帧数需要) 当前模式启用帧数且权限不足时出现
退出 退出程序

网络延迟

延迟通过 WinHTTP 的 HTTP 请求测量,走系统代理,不使用 ICMP ping。部分代理或 TUN 环境的 ping 结果可能不能反映实际访问延迟。探测地址为:

  • http://www.msftconnecttest.com/connecttest.txt
  • http://www.gstatic.com/generate_204
  • http://connect.rom.miui.com/generate_204

正常时约每 5 秒优先请求第一个地址,失败后并行请求两个备用地址;出现不可用结果或网卡变化后,会并行请求三个地址,以最先收到的合格响应头为准。只把 HTTP 2xx 状态码视为成功,重定向(如登录页)和错误码算作这次探测失败;仍不检查响应正文,也不跟随重定向。延迟按当前探测阶段计时,备用阶段不累计主地址的失败等待时间。

结果 判定
请求成功,延迟 < 所选阈值 正常
延迟 ≥ 所选阈值(默认 500 ms),且 < 1000 ms 较慢
本轮请求失败,或延迟 ≥ 1000 ms 记一次不可用
连续 3 次不可用 判定断网
一次请求成功且延迟 < 1000 ms 清除失败计数;已断网时判定恢复
所有物理网卡均断开,并通过短暂去抖确认 直接判定断网,无需等待 3 次 HTTP 不可用

不可用后约每 1 秒确认;断网后前 2 分钟约每 1.5 秒重试,之后约每 3 秒。所有物理网卡都断开时不发请求,等网卡状态变化后立即探测,另每 15 秒兜底检查一次。物理网卡断开后,即使本地代理返回成功,也需物理连接恢复才能判定恢复。系统睡眠会暂停探测并清除断网计时;唤醒约 3 秒后重新探测。

关闭断网提醒、且当前界面不显示延迟(例如迷你或任务栏模式未勾选「延迟」)时,网络探测完全停止,不再发出任何请求。

从源码编译

需要 64 位 MinGW-w64 g++ 13.2(含 windres),并加入 PATH。在仓库根目录执行:

build.bat

PowerShell:

& .\build.bat

脚本生成静态链接的 Pulse.exe 和控制台自测程序 metrics_selftest.exe。源码为 C++17,也可用 MSVC 编译:在 x64 开发者命令提示符里运行 build_msvc.bat,产物在 build-msvc\。发布版用 MinGW 编译。

打包 zip(会先调用 build.bat):

scripts\package.cmd
scripts\package.cmd -NoBuild
scripts\package.cmd -Version 1.3.0

-NoBuild 仅在仓库根目录已有 Pulse.exe 时跳过编译。未指定 -Version 时,从 app.rc 的 FileVersion 读取,读不到则用 0.1.0。输出为 dist\Pulse-<版本>-win-x64.zip,包含 Pulse.exe、本说明、LICENSE、THIRD_PARTY_NOTICES.md 和 scripts\ 下的安装、卸载脚本。

GitHub Actions 会在推送 v* 标签时自动编译并发布 Release。

功耗与内存

以下为 Intel Core Ultra 5 226V 笔记本上,按 Pulse 进程 CPU 时间折算的单核占用,以及任务管理器「内存」列(私有工作集)的参考:

模式 CPU 占用 内存
任务栏模式 约单核 0.1%–0.15% 约 13 MB
迷你模式 约单核 0.1%–0.3% 约 13 MB
完整模式 每次刷新执行完整采集路径,约单核 0.5%–1.5% 约 40 MB

迷你模式、任务栏模式和断网提醒卡片使用软件渲染,不加载显卡驱动;完整模式使用硬件渲染,显卡驱动会占用较多内存。从迷你或任务栏模式打开过完整面板后,驱动已加载,内存不会回到最初的数值,重启程序即可恢复。

可选指标仍受组件勾选和各自采集间隔控制。数字随机器、所选组件、刷新间隔和后台负载变化,仅供参考。

致谢

见 THIRD_PARTY_NOTICES.md。

免责声明与隐私

  • 本软件按“原样”提供,不提供任何担保;使用风险自负,作者不对使用本软件造成的任何损失负责,具体以 LICENSE(MIT)为准。
  • Pulse 读取系统性能计数器、电池、进程和网络状态等信息,除用户选择的开机自启外,不修改系统设置。正常环境下,运行时只将设置和日志写入 %LOCALAPPDATA%\Pulse。手动运行「功耗诊断」时另写 power-diagnostics.txt,不会自动上传。开关「开机自启」时写入或删除 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 下的 Pulse 值。安装脚本另会复制程序并创建上述快捷方式。
  • 联网只用于测延迟,定期请求上面列出的三个探测地址,走系统代理。不通过网络收集或上传个人数据,没有统计、遥测,也没有自动更新。
  • 日志只保存在本机,不会上传。
  • 管理员权限只用于帧数功能的 ETW 会话;不需要帧数就无需管理员。
  • Pulse.exe 没有代码签名,首次运行可能被 Windows SmartScreen 提示,可点「更多信息 → 仍要运行」;建议只从本项目的 GitHub Releases 下载。

许可证

MIT 许可证。版权所有 © 2026 yftx。

English documentation: README.en.md

About

轻量的 Windows 桌面悬浮监控:电池功耗与续航、CPU/GPU/内存占用与功耗、网速、真实延迟与断网提醒。原生 C++ / Direct2D,迷你模式约 0.1% CPU。

Topics

Resources

Stars

128 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages