我已阅读Get File Icon used by Shell和其他类似的帖子 - 并且已经使用SHFileInfo获取任何给定扩展程序的关联图标,这非常有效。
但是,Outlook使用“.msg”作为邮件和约会项目(如果您拖动电子邮件并将事件拖到桌面上,则生成的图标会有所不同)。我注意到,如果我使用注册表方法,标准信封图标位于C:\ WINDOWS \ Installer {90120000-0011-0000-0000-0000000FF1CE} \ outicon.exe的索引17(在运行Outlook 2007的XP机器上) - 并且,方便地,约会图标在索引18处。我可以在提取图标时硬编码18,但听起来非常脆弱。
鉴于电子邮件或约会的文件名(但不是实际文件),并且知道它是电子邮件或约会,是否有人知道如何通过shell或通过注册表获取正确的图标?
当然,如果我有实际的文件,我可以使用Icon.ExtractAssociatedIcon,但在我正在处理的系统中,我们正在显示一个存储在别处的文件列表,并预先下载每个文件是不可能的。
答案 0 :(得分:1)
如果您知道预约或邮件的时间,您是否可以将“appointment.ics”传递到您的SHFileInfo功能中并获取正确的图标? 马库斯