Skip to content
margbug01Public

About

一个更好看的 Windows 任务管理器:进程按应用分组、看得懂的性能页、启动应用和服务,还能代替 Ctrl+Shift+Esc。Go + MyGo 原生界面。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

Pulse 图标

Pulse

一个更好看的 Windows 任务管理器

进程按应用分组,性能页看得懂,启动应用和服务也管得了。云母背景、深浅色、MiSans 字体,还能直接接管 Ctrl+Shift+Esc,打开就是管理员模式,不弹 UAC。

Windows 10 / 11 Go 1.27 MyGo MIT

进程页,浅色和深色

为什么用它

一眼看出谁在吃资源。 Chrome 的 23 个进程是一行,不是 23 行;应用、后台进程、Windows 进程分三段。CPU、内存、磁盘、GPU 的数字底下垫着柔和的热度色,占得越多颜色越深,扫一眼就知道该看哪儿。

每个进程都能单独处理。 选中一组,右边是它的 CPU 和内存曲线、文件位置,以及组里的每个进程。点一下跳到「详细信息」看命令行、用户、父进程和启动时间;鼠标移上去出现 ✕,可以只结束这一个。结束都要点两次,csrss、lsass 这类 Windows 离不开的进程不给结束。

性能页看得懂。 CPU 每个线程一格,性能核、能效核、低功耗核分开排;内存拆成在用、已修改、备用、可用;每块磁盘、每张网卡、每块 GPU 都有型号和曲线。旁边一栏直接列出谁在用 CPU、内存、磁盘、GPU,点名字就回到进程页。

启动应用和服务也管。 启动应用读注册表 Run 键和启动文件夹(快捷方式自己解析),启用和禁用写的是 Windows 任务管理器用的同一个开关,两边互通;指向的文件已经不在了会标红。服务能看状态、启动类型、描述、登录身份和可执行文件,能启动、停止、重新启动。

可以代替任务管理器。 设置里打开一个开关,Ctrl+Shift+Esc、任务栏右键、Ctrl+Alt+Del 打开的就都是 Pulse,直接是管理员模式,不弹 UAC。关掉就还给 Windows。

好看,也安静。 云母背景,跟随系统或者固定浅色、深色,字体用 MiSans。更新速度可以调高、调低或者暂停(暂停后按 F5 刷新),窗口也可以总在最前。

截图

性能页 启动应用
详细信息 服务

开始使用

暂时没有安装包,装好 Go 1.27 自己编译:

git clone https://github.com/margbug01/Pulse.git
cd Pulse
go build -trimpath -ldflags="-H windowsgui -s -w" -o outputs/Pulse.exe .
.\outputs\Pulse.exe

第一次打开会弹 UAC:和 Windows 任务管理器一样,Pulse 要管理员权限才看得到所有进程。拒绝也能用,只是系统进程的路径和图标读不到、也结束不了,侧栏随时可以「以管理员重启」。打开「代替任务管理器」以后就不会再弹了。

设置存在 %APPDATA%\Pulse\settings.json。

快捷键

按键 作用
Ctrl+F 搜索。每页搜自己的内容,在性能页打字会转到进程页
Delete 结束选中的应用或进程,要按两次
F5 立即刷新,暂停更新时也能刷新
Ctrl+Shift+Esc 打开 Pulse(打开「代替任务管理器」以后)

代替任务管理器

设置页

在 设置 › 系统 › 代替任务管理器 打开(要先以管理员模式运行 Pulse)。打开时 Pulse 做两件事,和 Process Explorer 的「Replace Task Manager」是同一个办法:

  1. 在 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe 写入 Debugger = "Pulse.exe 的路径"。之后 Windows 每次要启动 taskmgr.exe,都会改为启动 Pulse。
  2. 建一个计划任务 Pulse Elevated,以你的账户、最高权限运行 Pulse。被 Debugger 拉起来的 Pulse 没有管理员权限,它会去运行这个任务,由任务启动管理员模式的 Pulse,所以不弹 UAC。Pulse 已经开着的话,就只是把它叫到最前面。任务还改掉了几个对笔记本不友好的默认值:用电池时也启动、不会在 72 小时后被结束、按正常优先级运行。

关掉开关,两样都会删掉。开着的时候别移动或删除 Pulse.exe,不然任务管理器会打不开。万一已经删了,在管理员终端里运行:

reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe" /v Debugger /f
schtasks /delete /tn "Pulse Elevated" /f

数据从哪来

全是 Windows 自带的接口,不装驱动,不联网。

展开看每一项
内容 来源
进程、CPU 时间、内存(专用工作集)、I/O NtQuerySystemInformation
CPU / 每核利用率、频率 PDH \Processor Information(% Processor Utility,和任务管理器同一口径)
核心类型 GetLogicalProcessorInformationEx(效率等级 + L3 共享)
内存构成、已提交 GlobalMemoryStatusEx + PDH \Memory
磁盘活动、读写、型号 PDH \PhysicalDisk + IOCTL_STORAGE_QUERY_PROPERTY
网卡 GetIfTable2(只留真实、已连接的网卡)
GPU 利用率、显存 PDH \GPU Engine、\GPU Adapter Memory,名字按 LUID 对 DirectX 注册表
应用 / 图标 / 描述 EnumWindows、SHDefExtractIcon、AppxManifest.xml 的 logo、SHGetStockIconInfo、文件版本信息
用户名、命令行 OpenProcessToken + LookupAccountSid、NtQueryInformationProcess(ProcessCommandLineInformation)
启动应用 Run 键、启动文件夹(.lnk 自己解析,包括只有 ItemID 列表的)、Explorer\StartupApproved
服务 EnumServicesStatusEx;配置读 HKLM\SYSTEM\CurrentControlSet\Services
代替任务管理器 IFEO 的 Debugger;schtasks /create /xml(HighestAvailable、用电池也启动、不限时长、正常优先级)

还没做的

  • 按进程统计网络流量(要 ETW)、GPU 温度
  • 应用历史记录、用户页;启动应用的「启动影响」和商店应用的启动任务
  • 改服务的启动类型(先用「打开服务管理器」)
  • 只在 Windows 11 上测过,Windows 10 上没有云母背景

常见问题

磁盘那一列为什么比任务管理器大?

Pulse 算的是进程发出的全部读写字节,包括命中缓存、没真正落到磁盘的部分;任务管理器的磁盘列只算真正读写了磁盘的那部分。

杀毒软件会不会报?

「代替任务管理器」用到的 IFEO Debugger 和最高权限计划任务,也是一些恶意软件爱用的手法,个别杀毒软件可能会提示。这两样只在你打开开关时才写,关掉就删,代码全在 taskmgr_windows.go。

为什么不把字体打包进去?

MiSans 全套字重有 80 MB。主题写的是 MiSans, system-ui:装了就用,没装就用系统字体。想要可以去 MiSans 下载页 装上。

服务配置为什么读注册表?

QueryServiceConfigW 在加载了 MyGo 的进程里会在 sechost.dll 里访问违例(别的服务 API 都正常),所以启动类型、路径、登录身份、描述直接从 HKLM\SYSTEM\CurrentControlSet\Services 读,结果一样。

构建与开发

go test ./...      # 加 -short 跳过读本机的测试
go build -trimpath -ldflags="-H windowsgui -s -w" -o outputs/Pulse.exe .
  • 开发时加 --no-elevate 跳过 UAC。
  • 界面测试用 MyGo 的 ui.Tester 离屏渲染,PULSE_SHOTS=<文件夹> go test 会把画面存成 PNG。
  • README 的截图是假数据(图标取自本机装着的程序):PULSE_README=<文件夹> go test -run TestReadmeShots,再 python tools/shots.py <文件夹> docs/screenshots(要 Pillow 和 numpy)。
  • 图标、版本和 manifest 在 rsrc_windows_amd64.syso,改了用 go-winres 重新生成:
go run github.com/tc-hib/go-winres@v0.3.3 simply --arch amd64 --icon resources/icon.png --manifest gui --product-name Pulse --file-description "Pulse 任务管理器" --product-version 0.3.0 --file-version 0.3.0 --original-filename Pulse.exe

致谢

许可证

MIT

About

一个更好看的 Windows 任务管理器:进程按应用分组、看得懂的性能页、启动应用和服务,还能代替 Ctrl+Shift+Esc。Go + MyGo 原生界面。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages