Sud*_*n S 5 windows icons nsis windows-shell shell-icons
我真的很喜欢KDE SC 4的氧气外观.我写了一个程序将这些图标应用到windows.该程序是用NSIS编写的,目前几乎完全正常运行.但是,我发现让Windows了解图标更改的唯一方法是杀死explorer.exe,删除图标缓存,并重新生成explorer.exe.SHChangeNotify与SHCNE_ASSOCCHANGED似乎无法使Windows知道的更改控制面板图标,我的电脑图标,等请提出一个更好的,那么残酷的方法来让Windows识别这些更改.
编辑:我发现了一个名为Icon Tweaker的程序似乎能够做到这一点,但它是封闭的来源,所以我不知道它是如何做到的.(IconTweaker:http://www.crystalxp.net/galerie/en.id.83-icontweaker.html )
编辑:感谢Anders的回复(见下文),我的工作正常.但是,我会把我工作的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
Run Code Online (Sandbox Code Playgroud)
$ 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(不执行恢复大小的第二个更改)
SystemParametersInfo()有一个名为SPI_SETICONS的参数,根据MSDN"重新加载系统图标".我从来没有尝试使用SPI_SETICONS所以我不知道它是否有效,如果你想测试你会使用像
System::Call 'user32::SystemParametersInfo(i 0x0058,i0,i0,i2)i' ;SPI_SETICONS
Run Code Online (Sandbox Code Playgroud)
如果事实证明这还不够,你可以拿出那个没有文件的大锤子:
请注意,这可能会重新排列桌面图标,即使"自动排列"已关闭,可能还有其他可能会惹恼用户的事情!
您可以只运行以下命令行:
c:\Windows\System32\ie4uinit.exe -ClearIconCache
Run Code Online (Sandbox Code Playgroud)
该命令行将删除您的缓存图标,而无需重新启动资源管理器
| 归档时间: |
|
| 查看次数: |
6234 次 |
| 最近记录: |