200分:如何获取收藏夹中各个项目的图标?

时间:2021-07-08 06:32:35
如题,IE收藏夹中的各个快捷方式的图标如何提取?

终极目标:用程序实现,如我们眼睛看到的一样,这个项目是否已经有网站图标,如果有网站图标,如何获得这个图标。

打开收藏夹目录,可以看到各个快捷方式,一般情况下,有两种情况:1、图标为该快捷方式的网址指向的网站图标;2、图标为IE默认图标。

本来有一个办法:获取该项目在系统图像列表中的索引。但这有个严重的问题:也许由于多个程序修改注册表后造成URL类型关联混乱,这些还没有网站图标的项目(如果一切正常,将是IE默认网页图标,此时获取系统图标就没有任何问题),其图标将千奇百怪,或是系统无法识别的那种,或是其他软件修改后的某个图标。

在缓存目录x:\……AppData\Local\Microsoft\Windows\Temporary Internet Files中,可以看到一切名称均为favicon.ico的一些图标,其网址可以区分(虽然我目前还不知道怎么获取这些内容的网站,如果用枚举的话,也许效率太低),但可以看到这里的图标并不全,即从收藏夹目录看到有的图标,但在这个Temporary Internet Files里面没有……

所以非常的困惑……

10 个解决方案

#1


直接从收藏夹视图里面截图?

#2


有一个软件可以获取EXE的图标。网页的图标。。。不知道。

#3


http://xuyongfei999.blog.163.com/blog/static/9237010200824112253816/
根据这个文章,服务器根目录下有一个favicon.ico的文件,才可以在收藏夹里面显示图标。是否可根据这个形成一个思路?去url的根目录下查找该文件,有的就有图标了……

#4


看网页的源文件,有类似下面的一行:
<link rel="shortcut icon" href="/favicon.ico" />
然后下载之
但,有一些网站不按套路出牌,那个我就不知道了。问问js高手试试

#5


回4楼,下载不在讨论之列,现在问的是如何获取图标。

#6


回1楼,截图不太可行吧?

#7


回3楼,即使这个办法可行,也要联网才行吧。IE等浏览器可不这样,即使没联网也能显示

#8


试试搜索下SHGetFileInfoA, DrawIconEx等api,windows 2003 下可以。

#9


1)首先看 .url 文件中有没有指定
IconFile=
IconIndex=
2)如果上面没指定,就取 url 的根目录,拼上 favicon.ico
3)用 API 函数 GetUrlCacheEntryInfo() 查缓存,如果成功则载入 INTERNET_CACHE_ENTRY_INFO.lpszLocalFileName 图标,否则用默认图标。

#10


 感谢9楼,这应该是最接近目标的答案。但是在WIN7下,打开目录,发现有些项目是有图标的,但是在缓存中不存在。最典型的是用IE打开http://qzone.qq.com/,收藏,这时候就会发现是有图标的。而用http://qzone.qq.com/favicon.ico查找缓存,则没有这个图标。非常之困惑……

#1


直接从收藏夹视图里面截图?

#2


有一个软件可以获取EXE的图标。网页的图标。。。不知道。

#3


http://xuyongfei999.blog.163.com/blog/static/9237010200824112253816/
根据这个文章,服务器根目录下有一个favicon.ico的文件,才可以在收藏夹里面显示图标。是否可根据这个形成一个思路?去url的根目录下查找该文件,有的就有图标了……

#4


看网页的源文件,有类似下面的一行:
<link rel="shortcut icon" href="/favicon.ico" />
然后下载之
但,有一些网站不按套路出牌,那个我就不知道了。问问js高手试试

#5


回4楼,下载不在讨论之列,现在问的是如何获取图标。

#6


回1楼,截图不太可行吧?

#7


回3楼,即使这个办法可行,也要联网才行吧。IE等浏览器可不这样,即使没联网也能显示

#8


试试搜索下SHGetFileInfoA, DrawIconEx等api,windows 2003 下可以。

#9


1)首先看 .url 文件中有没有指定
IconFile=
IconIndex=
2)如果上面没指定,就取 url 的根目录,拼上 favicon.ico
3)用 API 函数 GetUrlCacheEntryInfo() 查缓存,如果成功则载入 INTERNET_CACHE_ENTRY_INFO.lpszLocalFileName 图标,否则用默认图标。

#10


 感谢9楼,这应该是最接近目标的答案。但是在WIN7下,打开目录,发现有些项目是有图标的,但是在缓存中不存在。最典型的是用IE打开http://qzone.qq.com/,收藏,这时候就会发现是有图标的。而用http://qzone.qq.com/favicon.ico查找缓存,则没有这个图标。非常之困惑……