【问题标题】:SHGetFileInfo returning icons with overlays when none are requested当没有请求时,SHGetFileInfo 返回带有覆盖的图标
【发布时间】:2010-09-14 22:15:09
【问题描述】:

出于某种原因,为 .lnk 文件调用 SHGetFileInfo 会返回带有链接覆盖的图标,即使我没有请求它:

Shell.SHGetFileInfo(path, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo),
SHGFI.ICON | SHGFI.SMALLICON | SHGFI.TYPENAME | SHGFI.DISPLAYNAME);

我正在使用 shFileInfo.hIcon 来获取图标句柄(Windows 7、x64)。关于为什么会发生这种情况以及如何在没有覆盖的情况下获取图标的任何建议?

【问题讨论】:

  • 是否有可能有人错误输入了 SHGFI.DISPLAYNAME 的值?它应该是 0x200。 SHGFI.ADDOVERLAYS 为 0x20。容易犯的错误。
  • 已经考虑过 - 定义是:.ICON = 0x100、.SMALLICON = 0x1、.TYPENAME = 0x400 和 .DISPLAYNAME = 0x200。

标签: c# .net winapi


【解决方案1】:

我终于能够通过获取系统图像列表中的图标索引并使用 ImageList_GetIcon 获取无覆盖图标的句柄来解决此问题:

http://social.msdn.microsoft.com/Forums/en-US/windowsgeneraldevelopmentissues/thread/83817b05-580e-476a-916f-eb3309cda7bb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2012-03-05
    • 2020-08-26
    相关资源
    最近更新 更多