English | 简体中文
Pulse 是 Windows 桌面悬浮小组件,也可以嵌入任务栏:一个静态链接的 Pulse.exe,用原生 C++17、Win32 和 Direct2D 显示硬件、电池与网络状态。
下载最新版 · Windows 10 / 11 64 位 · 免安装
完整模式默认自上而下显示:
- 硬件四格: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」切换,默认跟随系统显示语言。
- 深色右键菜单、托盘图标、窗口置顶、开机自启和恢复默认组件。
完整模式:
迷你模式:
任务栏模式(浅色任务栏,充电中):
- 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。脚本会:
- 若 Pulse 正在运行,先退出它。
- 把
Pulse.exe复制到%LOCALAPPDATA%\Pulse。 - 创建当前用户的开始菜单快捷方式。
- 按下面的参数决定是否创建桌面快捷方式和开机自启。
- 启动安装后的 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.txthttp://www.gstatic.com/generate_204http://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.batPowerShell:
& .\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 |
迷你模式、任务栏模式和断网提醒卡片使用软件渲染,不加载显卡驱动;完整模式使用硬件渲染,显卡驱动会占用较多内存。从迷你或任务栏模式打开过完整面板后,驱动已加载,内存不会回到最初的数值,重启程序即可恢复。
可选指标仍受组件勾选和各自采集间隔控制。数字随机器、所选组件、刷新间隔和后台负载变化,仅供参考。
- 本软件按“原样”提供,不提供任何担保;使用风险自负,作者不对使用本软件造成的任何损失负责,具体以 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




