如何以编程方式更改 Windows 10 任务栏图标大小

cpr*_*ack 4 c# windows winapi taskbar windows-10

在 Windows 10 中,您可以在任务栏的小图标或大图标之间进行选择。通过右键单击任务栏并转到“设置”,可通过 UI 使用该设置:

使用小任务栏按钮设置

也可以通过注册表编辑器 (regedit.exe) 通过修改以下项来调整此设置:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarSmallIcons

大图标的值为 0,小图标的值为 1。但与 UI 设置相反,使用此方法您需要注销并登录 Windows 用户才能更新任务栏(重新启动 explorer.exe 进程也可以,但这不是一个选项)。

我希望能够更新任务栏并以编程方式在小图标或大图标之间进行选择。是否有任何 API 或任何更新任务栏的方法,以便它无需注销即可从注册表中读取?我的具体目标是在使用小屏幕(笔记本电脑上的那个)时自动显示小图标,在使用大屏幕(我的常规大工作屏幕)时自动显示大图标。

编辑:由于提供的解决方案,现在适用于 Windows 的自适应任务栏成为现实:D

And*_*ers 5

在 Windows 10 之前,您可以WM_SETTINGCHANGE消息发送到任务栏,但似乎不再有效。您可能需要调试 Explorer.exe 才能弄清楚它现在是如何通知的。

编辑:

我刚刚用一个简单的 C++ 应用程序对此进行了测试,如果您设置了一个特殊的 LPARAM 字符串,它也适用于 Windows 10:

SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, (LPARAM)L"TraySettings", SMTO_NOTIMEOUTIFNOTHUNG, 3000, NULL);
Run Code Online (Sandbox Code Playgroud)