我真的很喜欢KDE SC 4的氧气外观。我写了一个程序将这些图标应用到windows。该程序是用NSIS编写的,目前几乎完全正常运行。但是,我发现让Windows了解图标更改的唯一方法是杀死explorer.exe,删除图标缓存,并重新生成explorer.exe。带有SHChangeNotify
的{{1}}似乎无法让Windows了解控制面板图标,“我的电脑”图标等的更改。请建议更好,更简洁的方法让Windows了解这些更改
编辑:我发现了一个名为Icon Tweaker的程序似乎可以执行此操作,但它是封闭源代码,所以我不知道它是如何做到这一点的。 (IconTweaker:http://www.crystalxp.net/galerie/en.id.83-icontweaker.html)
编辑:感谢Anders的回复(见下文),我的工作正常。但是,我将把我工作的NSIS代码放在这里,以防其他人需要它
SHCNE_ASSOCCHANGED
$ 0寄存器用于存储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
Shell Icon Size
的值。然后我们递增值并执行HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
,然后递减并重新发送。
编辑:作为奖励,这可以用作在Windows XP上获得更大(Windows 7大小)桌面图标的黑客。只需将SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL)
值加倍并调用Shell Icon Size
(不执行恢复大小的第二个更改)
答案 0 :(得分:5)
SystemParametersInfo()有一个名为SPI_SETICONS的参数,根据MSDN“重新加载系统图标”。我从来没有尝试过使用SPI_SETICONS所以我不知道它是否有效,如果你想测试你会使用像
这样的东西System::Call 'user32::SystemParametersInfo(i 0x0058,i0,i0,i2)i' ;SPI_SETICONS
如果事实证明这还不够,你可以拿出那张没有文件的大锤子:
请注意,这可能会重新排列桌面图标,即使“自动排列”已关闭,也可能是其他可能会惹恼用户的事情!
答案 1 :(得分:4)
您只需运行以下命令行:
c:\Windows\System32\ie4uinit.exe -ClearIconCache
该命令行将删除您的缓存图标,而无需重新启动资源管理器