3

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

通过(用于目录)获得

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 但它对目录做了奇怪的事情 - 普通文件夹有“未知文件类型白皮书”图标,回收bin 有 VLC 图标等。SVN 下的目录有适当的覆盖,但基本文件图标(白纸)。

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

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

4

1 回答 1

1

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

于 2010-03-23T15:20:37.557 回答