我试图找出我的应用程序的图标存储在VS 2008中的位置。在启动项目的应用程序属性中,我添加了一个带有“默认设置的嵌入清单”设置的图标。存储.NET应用程序图标的位置在哪里?
我想以编程方式在应用程序中显示图标,但我无法弄清楚图标的存储位置。
如何从代码中获取应用程序图标的引用?
我试图找出我的应用程序的图标存储在VS 2008中的位置。在启动项目的应用程序属性中,我添加了一个带有“默认设置的嵌入清单”设置的图标。存储.NET应用程序图标的位置在哪里?
我想以编程方式在应用程序中显示图标,但我无法弄清楚图标的存储位置。
如何从代码中获取应用程序图标的引用?
试试这个:
var icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
它存储在一个可执行文件的非托管资源部分。您可以使用File + Open + File并选择DLL或EXE来查看该部分。打开图标节点。最低编号的资源是Windows选作应用程序图标的资源。
在.NET框架中有访问二进制文件非托管资源的特殊支持。这里最好的选择是使用Icon.ExtractAssociatedIcon(),但是你无法控制你将得到的图标中的哪些图像。 Pinvoke fallback是LoadImage(),但很难使用。到目前为止,最好的方法还是使图标在您的托管资源中可用。
Icon.ExtractAssociatedIcon
的问题是它只从应用程序的图标中提取一个图像。但是,为Win7或更新版本设计的应用程序通常会提供具有不同大小/分辨率的多个图像的图标。为了得到与包括所有图像的图标对象,我发现这里的完整解决方案:
http://www.codeproject.com/Articles/29923/Assigning-an-application-s-icon-to-all-forms-in-th
真棒。谢谢。 – Mashmagar 2010-10-06 14:22:31