【发布时间】:2010-12-14 18:47:57
【问题描述】:
我已经阅读了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,但这听起来很脆弱。
鉴于电子邮件或约会的文件名(但不是实际文件),并且知道它是电子邮件或约会,是否有人知道如何通过外壳或注册表获得正确的图标?
当然,如果我手头有实际文件,我可以使用 Icon.ExtractAssociatedIcon,但在我正在使用的系统中,我们会显示存储在其他地方的文件列表并预先下载每个文件是不可能的。
【问题讨论】:
标签: c# windows outlook shell-icons