【发布时间】:2011-03-02 07:54:28
【问题描述】:
我能否以某种方式使用操作系统中的文件类型图像并将它们显示在我的应用程序中?
【问题讨论】:
-
查看 CodeProject 上的这篇文章 codeproject.com/KB/cs/GetFileTypeAndIcon.aspx
标签: c# .net windows icons file-type
我能否以某种方式使用操作系统中的文件类型图像并将它们显示在我的应用程序中?
【问题讨论】:
标签: c# .net windows icons file-type
如果您知道所需图标的文件的文件名,则可以为此目的使用ExtractAssociatedIcon 函数。例如
Icon ico = Icon.ExtractAssociatedIcon(@"C:\WINDOWS\system32\notepad.exe");
不过,这种方法有一个问题。根据其文档,
当 ExtractAssociatedIcon 与位图一起使用时,如果运行应用程序的系统具有导致位图文件显示为缩略图的注册表设置,则可能会返回缩略图而不是图标。
我发现的另一件事是这种方法只提取 32x32 像素的图标。
有关如何使用此方法的更多信息,请参阅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);
【讨论】: