我試圖找出我的應用程序的圖標存儲在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