在C#.NET中使用操作系统的文件类型映像

时间:2011-03-02 07:54:29

标签: c# .net windows icons file-type

我可以以某种方式使用操作系统中的文件类型图像并将其显示在我的应用程序中吗?

1 个答案:

答案 0 :(得分:2)

如果您知道所需文件的文件名,则可以使用ExtractAssociatedIcon功能。 e.g。

Icon ico = Icon.ExtractAssociatedIcon(@"C:\WINDOWS\system32\notepad.exe");

虽然这种方法有一个问题。根据其文件,

  

当ExtractAssociatedIcon与位图一起使用时,如果运行应用程序的系统具有导致位图文件显示为缩略图图像的注册表设置,则可能会返回缩略图图像而不是图标。

我发现的另一件事是这个方法只提取32x32pixel图标。

有关如何使用此方法的详情,请参阅System.Drawing.Icon.ExtractAssociatedIcon (MSDN)


对于更强大的图标提取器,我建议您查看CodeProject上的OSIcon项目。
它允许您使用文件名扩展名获取任何文件的关联图标 以下是执行此操作的示例代码:

OSIcon.WinAPI.Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
Icon icon = OSIcon.IconReader.GetFileIcon(".png", IconReader.IconSize.Large, false, ref shfi);

这是项目的链接:http://www.codeproject.com/KB/system/OSIcon.aspx