我真的很喜欢 KDE SC 4 的氧气外观。我编写了一个程序来将这些图标应用于窗口。该程序是用 NSIS 编写的,目前几乎可以完全发挥作用。但是,我发现让 Windows 知道图标更改的唯一方法是杀死 explorer.exe,删除图标缓存,然后重新生成 explorer.exe。SHChangeNotify
withSHCNE_ASSOCCHANGED
似乎无法让 Windows 了解对控制面板图标、我的电脑图标等的更改。请建议一种更好、不那么残酷的方法来让 Windows 了解这些更改。
编辑:我发现一个名为 Icon Tweaker 的程序似乎能够做到这一点,但它是封闭源代码,所以我不知道它是如何做到的。(IconTweaker:http ://www.crystalxp.net/galerie/en.id.83-icontweaker.html )
编辑:感谢安德斯的回复(见下文),我的工作正常。但是,我将把我的工作 NSIS 代码放在这里,以防其他人需要它
ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size"
IntOp $0 $0 + 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
IntOp $0 $0 - 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
$0 寄存器用于存储 的Shell Icon Size
值HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
。然后我们增加值并执行 a SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL)
,然后减少并重新发送。
编辑:作为奖励,这可以用作在 Windows XP 上获得更大(Windows 7 大小)桌面图标的技巧。只需将值加倍Shell Icon Size
并调用SendMessage
(不要执行恢复大小的第二次更改)