如何修改系统图标库,比如进行添加,删除等操作!如何实现呢!?(100分)

  • 主题发起人 主题发起人 lonelybug
  • 开始时间 开始时间
小雨哥:我查了这方面的资料了确实可以不用desktop.ini文件来修改文件夹图标,由于我作的修改图标需要很多,所以我不想每个目录下面都有一个desktop.ini文件,比较不方便管理!<br>
 
yzhshi:请问,你知道如何使用IShellLink::GetIconLocation<br>这样的函数吗!?这种函数应该属于com类型的吧!
 
http://www.vckbase.com/vckbase/vckbase8/vc/nonctrls/advui_01/0801004.htm<br>耐心的看完,最后你会得到更多的,同时你似乎还可以得出一个结论——还是得使用Desktop.ini<br>IShellIconOverlayIdentifier是覆盖图标,就是两个图标叠加。。。
 
yzhshi:我看那个文章了,好先还是要用desktop.ini文件,可是昨天我查Msdn的时候发现一个IShellLink::GetIconLocation和IShellLink::SetIconLocation这个函数,我看说明他们都是来自shell32.dll的,我想问问这能不能做到呢!<br>还有一个想问一下,如何才能把imagelist里面的图标存为为真彩色的.ico文件!,能不能指点一下,我主要是不知道如何让图标变成真彩色的,我每次存完了都好像是16为色的,很奇怪!<br>PS:我问了这么多问题,很不好意思,所以我还有几个贴自没有人回答对,或者是没有人理,分都各你们几位了,不过一定要回来帮我完成这个问题呀!全指望你们了的指点了!<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1372906<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1371014
 
没错,没错, yzhshi 说得没错。IShellIconOverlayIdentifier 顾名思义就是在一个原<br>来的图标上再覆盖上一张图标。典型的就是快捷方式左下角的小白箭头。虽然在某种情况<br>下可以做到似乎更改了图标(原来的图标没有覆盖图标大时),但好象没听说有人用这种方<br>法来更改图标的。<br>你所谓的更改图标,就是更改类似以下的注册表:<br><br>;我的文档图标<br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{450D8FBA-AD25-11D0-98A8-0800361B1103}/DefaultIcon]<br>@="G://My Documents//Applications//ICON Get//shellXP.dll,126"<br><br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}]<br><br>;我的电脑图标<br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{20D04FE0-3AEA-1069-A2D8-08002B30309D}/DefaultIcon]<br>@="G://My Documents//Applications//ICON Get//shellXP.dll,15"<br><br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{208D2C60-3AEA-1069-A2D7-08002B30309D}]<br><br>;网上邻居图标<br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{208D2C60-3AEA-1069-A2D7-08002B30309D}/DefaultIcon]<br>@="G://My Documents//Applications//ICON Get//shellXP.dll,18"<br><br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{645FF040-5081-101B-9F08-00AA002F954E}]<br><br>;回收站图标<br>[HKEY_CURRENT_USER/Software/Classes/CLSID/{645FF040-5081-101B-9F08-00AA002F954E}/DefaultIcon]<br>"full"="G://My Documents//Applications//ICON Get//IconSet.dll,79"<br>"empty"="G://My Documents//Applications//ICON Get//IconSet.dll,78"<br>@="G://My Documents//Applications//ICON Get//IconSet.dll,78"<br><br>文件夹的图标更改大多还是使用 yzhshi 介绍的方法,连 Microsoft 也是这样。那你为<br>什么不用呢?<br>IShellLink 这个接口是做快捷方式用的,IShellLink::SetIconLocation 是设置快捷方式<br>的图标,不能使用在其他方面,所以你的这个问题已经结束,请结贴吧。<br>感谢 yzhshi 为我们都提供了学习机会,十分感谢。
 
我也查了很多资料了,确实没有发现一些更好的办法了,而且好像微软之提供这种方法了!接贴了!
 
多人接受答案了。
 
后退
顶部