2009-08-27 53 views
2

我正在使用SHGetFileInfo api来获取句柄并显示与特定文件关联的图标。如何判断文件是否没有关联图标

如果该文件没有与之关联的图标,Windows会返回默认的浏览器,用于未知文件类型。在这种情况下我不要想要显示的图标。

如何判断文件是否没有关联图标,Windows是否让我恢复默认的图标?

在我的系统SHFILEINFO.iIcon总是等于3在这种情况下,但我不知道这是多么可靠,我期望有一个更好的方法来检查这一点。

编辑:我针对Windows XP和向上

感谢

回答

1

哪些操作系统版本,你定位?如果您可以假设Vista和更高版本,那么您可能会发现有用的API SHGetStockIconInfo

SHGetStockIconInfo(SIID_DOCNOASSOC, SHGSI_SYSICONINDEX, &sii) 

将返回您在sii.iSysImageIndex中查找的图标索引。

+0

XP及更高版本。我会更新我的帖子。感谢您的信息 – Jamie

0

你可以尝试传递一个带有未知扩展名的虚构文件名到SHGetFileInfo(),跟踪它报告的图标索引,然后将该索引与你的真实文件进行比较。

+0

您永远不会知道用户何时会安装其他注册虚拟扩展的应用程序。 –

+0

您只需事先向注册表中的注册文件扩展名查询,然后选择一个尚不存在的文件。或者随机动态生成文件扩展名,检查它是否存在,并在需要时重新生成(与其uUnique参数设置为0时的GetTempFileName()方法类似)。 –

相关问题