ShGetFileInfo 因目录异常而调用

发布于 2024-08-25 03:14:35 字数 588 浏览 6 评论 0 原文

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

通过(对于目录)获得

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函数用这些参数做什么?它到底获得了什么图标?

再说一遍,这不是问题,我只是好奇。

I have a simple file browser and there I display files and folders,

obtained by (for directory)

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

It works 100% fine, but I have noticed an oddity - if I try to obtain an icon for directory, but specify FILE_ATTRIBUTE_NORMAL instead of FILE_ATTRIBUTE_DIRECTORY
but it does weird stuff for directories - normal folders have "unknown file type white paper" icons, recycle bin has VLC icon, etc. Directories under SVN have proper overlay, but base file icon (white sheet of paper).

I understand that base icon for directory would now be the one of unknown file, but why do some folders have totally strange icon? Config.MSI has installer icon, recycle bin has VLC icon (wtf?!), etc. What does the shell function do with this parameters? Exactly what icon does it obtain?

Again, this is not a problem, I'm just curious.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

送君千里 2024-09-01 03:14:35

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

As far as I know icon resources are accessed by their numeric index, so my guess is that the right index is fetched, and the icon is then fetched from either the wrong library, or from the right one but using wrong offset+correct index.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文