Windows 任务栏按钮设置为合并后可以隐藏文字,但合并后切换窗口的成本大为增加;但不合并的话,又会显示窗口标题,也不舒服。微软就是不提供一个“从不合并,隐藏标签”的选项,今天我们就来实现它。
本文仅用于强迫症患者。

本文为翻译,适当做了些意译,根据东西思维差异作出一定改动。
原文:Make win10 taskbar buttons Never combine, hide labels

本文仅论述 Windows10 系统下的情况

微软官方在 设置 -> 个性化 -> 任务栏 页面的下拉菜单 合并任务栏按钮 中并未提供 从不合并,隐藏标签 选项,而是提供了以下 3 个选项:

可用选项 注册表值 hide bit combine bit
始终合并按钮 0 1 1
任务栏已满时 1 0 1
从不 2 0 0

译者注:为便于理解,两个表头未予翻译,下同。若实难理解,可参考:hide bit = 隐藏(控制)位、combine bit = 合并(控制)位。
也可通过右键单击任务栏并选择 任务栏设置 来访问 合并任务栏按钮

▲ 始终合并按钮

▲ 从不

通过选择该下拉菜单的选项,将会修改以下注册表项(修改值参考上表):

1
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarGlomLevel

1
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\MMTaskbarGlomLevel

前者控制主显示器上的任务栏,后者控制所有其它显示器上的任务栏。

译者注:单显示器用户看第一个就好

这些注册表值随后会被 explorer.exe 进程读取并转换为 hide bitcombine bit 。负责该转换的函数如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
0x7FF69EA67590:
explorer.exe+57590 - 48 89 5C 24 08 - mov [rsp+08],rbx
explorer.exe+57595 - 57 - push rdi
explorer.exe+57596 - 48 83 EC 20 - sub rsp,20
explorer.exe+5759A - 48 8B F9 - mov rdi,rcx
explorer.exe+5759D - 33 DB - xor ebx,ebx
explorer.exe+5759F - B9 56000040 - mov ecx,40000056
explorer.exe+575A4 - FF 15 7E011700 - call qword ptr [explorer.exe+1C7728]
explorer.exe+575AA - 85 C0 - test eax,eax
explorer.exe+575AC - 75 32 - jne explorer.exe+575E0
explorer.exe+575AE - 4C 8D 4C 24 38 - lea r9,[rsp+38]
explorer.exe+575B3 - 89 5C 24 38 - mov [rsp+38],ebx
explorer.exe+575B7 - 4C 8B C7 - mov r8,rdi
explorer.exe+575BA - 48 8D 15 3F671700 - lea rdx,[explorer.exe+1CDD00]
explorer.exe+575C1 - 48 C7 C1 01000080 - mov rcx,80000001
explorer.exe+575C8 - E8 5BDAFBFF - call explorer.exe+15028
explorer.exe+575CD - 8B 44 24 38 - mov eax,[rsp+38]
explorer.exe+575D1 - 83 E8 01 - sub eax,01
explorer.exe+575D4 - 74 17 - je explorer.exe+575ED
explorer.exe+575D6 - 83 F8 01 - cmp eax,01
explorer.exe+575D9 - 74 05 - je explorer.exe+575E0
explorer.exe+575DB - BB 03000000 - mov ebx,00000003
explorer.exe+575E0 - 8B C3 - mov eax,ebx
explorer.exe+575E2 - 48 8B 5C 24 30 - mov rbx,[rsp+30]
explorer.exe+575E7 - 48 83 C4 20 - add rsp,20
explorer.exe+575EB - 5F - pop rdi
explorer.exe+575EC - C3 - ret
explorer.exe+575ED - BB 01000000 - mov ebx,00000001
explorer.exe+575F2 - EB EC - jmp explorer.exe+575E0

我们的需求是 从不合并,隐藏标签 ,一种实现方法是修改下拉菜单 合并任务栏按钮 中某一现有选项的 hide bitcombine bit ,这是我目前的选择。

将指令

1
explorer.exe+575ED - BB 01000000           - mov ebx,00000001

修改为

1
explorer.exe+575ED - BB 02000000           - mov ebx,00000002

这一操作会使下拉菜单 合并任务栏按钮 任务栏已满时 选项的实际功能变更为 从不合并,隐藏标签 功能。




可实现 从不合并,隐藏标签 的第三方工具:7+ Taskbar Tweaker (官方支持中文)