ShGetFileInfo要求目录奇怪

时间:2010-03-17 15:17:04

标签: c# winforms icons shell32

我有一个简单的文件浏览器,我在那里显示文件和文件夹,

由(目录)

获得
SHFILEINFO info = new SHFILEINFO();
SHGetFileInfo(filename,
FILE_ATTRIBUTE_DIRECTORY,
ref info,Marshal.SizeOf(info),
SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS);

它100%正常工作,但我注意到一个奇怪的 - 如果我尝试获取目录的图标,但指定FILE_ATTRIBUTE_NORMAL而不是FILE_ATTRIBUTE_DIRECTORY 但它对目录有奇怪的东西 - 普通文件夹有“未知文件类型白皮书”图标,回收站有VLC图标等.SVN下的目录有适当的覆盖,但基本文件图标(白纸)。

据我所知,目录的基本图标现在是未知文件,但为什么有些文件夹有完全奇怪的图标? Config.MSI有安装程序图标,回收站有VLC图标(wtf?!)等.shell函数对这些参数有什么作用?它究竟是什么图标?

同样,这不是问题,我只是好奇。

1 个答案:

答案 0 :(得分:1)

据我所知,图标资源是通过它们的数字索引访问的,所以我的猜测是获取了正确的索引,然后从错误的库中获取图标,或者从正确的文件中获取图标但是使用了错误的偏移+正确的指数。