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

我可以以某种方式使用操作系统中的文件类型图像并将其显示在我的应用程序中吗? 最佳答案 如果您知道所需文件的文件名,则可以使用
ExtractAssociatedIcon功能.例如

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

但是这种方法有一个问题.根据其文件,

When ExtractAssociatedIcon is used with bitmaps, a thumbnail image may be returned instead of an icon if the system that is running the application has a registry setting that causes bitmap files to be shown as thumbnail images.

我发现的另一件事是这个方法只提取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

点赞