☰
SystemInformer 悬停工具提示完全掌控:从关闭即时弹出到彻底禁用工具提示
2026/10/1 9:43:22 网站建设 项目流程

SystemInformer 悬停工具提示完全掌控:从关闭即时弹出到彻底禁用工具提示

【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer

你正在 SystemInformer 的进程树里逐个展开分析可疑进程,鼠标划过某一行的瞬间,一个半透明的提示气泡弹出来挡住了一半列数据——你移开鼠标,它跟着走。这就是悬停工具提示(Tooltip,鼠标停留时自动弹出的小窗)在 SystemInformer 里最常制造的中断。好消息是,它的提示行为由两个独立的设置项控制,一个管"弹多快",一个管"弹不弹",找到这两个开关,你就能把提示系统调到完全顺手的程度。

先搞清楚:SystemInformer 工具提示的两道开关

在动手改设置之前,值得花一分钟看懂提示系统是怎么组织的。所有设置项的常量都定义在 SystemInformer/include/phsettings.h,其中与提示直接相关的是两个:

  • SETTING_ENABLE_INSTANT_TOOLTIPS(对应配置键EnableInstantTooltips,第 242 行):控制提示的弹出速度,默认0。
  • SETTING_ENABLE_TOOLTIP_SUPPORT(对应配置键EnableTooltipSupport,第 290 行):控制提示功能的总开关,默认1(启用),在 SystemInformer/settings.c 第 87 行注册默认值。

这两者不是冗余的。看 SystemInformer/proctree.c 里加载进程树设置的逻辑(第 337~340 行):

if (PhGetIntegerSetting(SETTING_ENABLE_INSTANT_TOOLTIPS)) SendMessage(TreeNew_GetTooltips(ProcessTreeListHandle), TTM_SETDELAYTIME, TTDT_INITIAL, 0); else SendMessage(TreeNew_GetTooltips(ProcessTreeListHandle), TTM_SETDELAYTIME, TTDT_AUTOPOP, MAXSHORT);

这是 Windows 消息机制:TTM_SETDELAYTIME用来调整控件的延时参数。开启即时模式时,把初始延时(TTDT_INITIAL)设为 0,提示随鼠标落下立刻出现;关闭时则把自动消失延时(TTDT_AUTOPOP)拉满,提示会按系统标准的悬停延迟才出现。网络列表(SystemInformer/netlist.c 第 201~204 行)和服务列表(SystemInformer/srvlist.c 第 192 行)用的是同一套写法,所以这个开关对多个视图统一生效。

而PhEnableTooltipSupport是另一个层面的判断。它作为全局变量声明在 SystemInformer/include/phsettings.h 第 52 行,在 SystemInformer/mainwnd.c 第 3271 行从配置读取。以进程树为例(SystemInformer/proctree.c 第 4876 行):

if (PhEnableTooltipSupport && !node->TooltipText) node->TooltipText = PhGetProcessTooltipText(node->ProcessItem, &node->TooltipTextValidToTickCount);

注意这里的细节:提示文本是按节点缓存的——生成一次后存到node->TooltipText,并带一个有效期(TooltipTextValidToTickCount),到期才重新生成。这意味着提示不只是"弹窗",背后还有文本构造和缓存失效的成本。关掉总开关,连这部分开销一起省掉。

目标一:提示弹得太快,只想让它慢下来

如果你需要提示内容(比如悬停看进程附带的服务列表),只是嫌它冒出来太快,那么只动EnableInstantTooltips一个值就够。

主推做法(图形界面):打开 SystemInformer 的 Options(选项)对话框,切到 Interface(界面)页签,找到 "Enable instant tooltips" 一行的复选框,取消勾选。这一步在源码里由 SystemInformer/options.c 第 1663 行绑定——界面复选框与SETTING_ENABLE_INSTANT_TOOLTIPS直接挂钩。

改完之后不需要重启:options 对话框的变更回调(options.c 第 1680~1688 行)会依次调用PhUpdateCachedSettings刷新全局缓存、SystemInformer_SaveAllSettings写盘、PhReloadSettingsProcessTreeList重载进程树的延时设置。也就是说,你取消勾选的瞬间,下一个鼠标悬停就是标准延迟了,而且下次启动依然保持。

备选做法(配置文件):直接编辑用户配置目录下的 SystemInformer 配置文件,把EnableInstantTooltips=1改为0。适合批量部署或你更习惯改文件的情况。改完重启程序生效。

目标二:干脆不要提示,界面保持干净

如果你的工作流是长时间盯着进程树、网络列表做深度分析,任何气泡都是干扰,那就关掉总开关。

主推做法:Options → Interface,取消勾选 "Enable tooltip support"。保存后PhEnableTooltipSupport变为 0,各视图的提示请求直接返回空(进程树那段if判断不成立,不再构造文本),CPU/IO/内存等性能图表上的提示也会一并关闭——SystemInformer/sysinfo.c 第 1604 行的if (PhEnableTooltipSupport) Graph_SetTooltip(...)决定了图表提示跟着总开关走。

源码级做法(编译期定制):如果你自己维护 SystemInformer 的二进制,或者想从根上保证某类环境(比如内网监控机)永远没有提示,可以改 SystemInformer/settings.c 第 87 行的默认值:

PhpAddIntegerSetting(SETTING_ENABLE_TOOLTIP_SUPPORT, L"0");

这样新配置环境下提示默认关闭,用户不改设置就不会看到任何气泡。这是最彻底的方案,但代价是所有用户共享这个行为,适合私有构建而非通用发布。

怎么选:按你的使用场景定

  • 日常监控、边看边查:保留总开关,关即时弹出(EnableInstantTooltips=0)。提示仍在,但要真正悬停一会儿才出现,误划不再打断视线。
  • 深度分析、录屏演示之外的长时间盯盘:两个都关。界面清爽,还能省掉提示文本的构造与缓存维护。
  • 给别人演示、带新人上手:两个都开(EnableInstantTooltips=1),提示即时出现,讲解时指向哪说明哪,节奏最快。

一个容易忽略的点:SystemInformer 配置存在用户应用数据目录里,跨机器或大版本升级前备份一份配置文件,比重新逐项点复选框省事得多。

延伸:这套设计的可扩展点

提示系统最有趣的地方在于它留了插件接口。SystemInformer/include/phplug.h 第 28 行定义了GeneralCallbackGetProcessTooltipText回调——插件可以往进程节点的提示文本里追加自己的内容(SystemInformer/itemtips.c 第 379 行附近就是主程序收集各插件提示文本的位置)。所以"关闭提示"和"插件扩展提示"共用同一条缓存通道:你关掉总开关时,插件贡献的提示也一起消失;而写插件时,你只需要实现一个返回字符串的回调,文本缓存和显示时机由主程序统一处理。另外,SystemInformer/include/phsettings.h 里还藏着SETTING_ENABLE_COMMAND_LINE_TOOLTIPS(命令行内容提示,默认关)这类细分项,思路完全一致:细粒度场景用一个独立开关,行为调优时值得顺藤摸瓜把它们都过一遍。


工具提示这类功能没有"开"或"关"的标准答案,只有"和你的工作流匹配"或"不匹配"。把这两个开关的位置记下来,下次被气泡打断时,两分钟内就能把节奏拿回来。

【免费下载链接】systeminformerA free, powerful, multi-purpose tool that helps you monitor system resources, debug software and detect malware. Brought to you by Winsider Seminars & Solutions, Inc. @ https://windows-internals.com项目地址: https://gitcode.com/GitHub_Trending/sy/systeminformer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询