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

时间:2017-03-17 15:15:57

标签: c# windows winapi windows-10 taskbar

在Windows 10中,您可以选择任务栏的小图标或大图标。通过右键单击任务栏并转到设置:

,可以通过UI获得该设置

Use small taskbar buttons settings

还可以通过修改以下密钥,通过注册表编辑器(regedit.exe)调整此设置:

HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\高级\ TaskbarSmallIcons

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

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

编辑:由于提供的解决方案,现在Adaptive Taskbar for Windows已成为现实:D

1 个答案:

答案 0 :(得分:4)

在Windows 10之前,您可以send the WM_SETTINGCHANGE message到任务栏,但它似乎是no longer works。您可能必须调试Explorer.exe以确定如何通知它。

编辑:

我刚用一个简单的C ++应用测试了这个,如果你设置了一个特殊的LPARAM字符串,它也适用于Windows 10:

SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, (LPARAM)L"TraySettings", SMTO_NOTIMEOUTIFNOTHUNG, 3000, NULL);