2011-03-02 8 views
4

我能否以某種方式使用操作系統中的文件類型圖像並將它們顯示在我的應用程序中?在C#.NET中使用操作系統的文件類型圖像

+0

退房這篇文章在CodeProject http://www.codeproject.com/KB/cs/ GetFileTypeAndIcon.aspx – codingbadger 2011-03-02 07:59:36

+1

可能的重複[如何在C#中獲取常用文件類型圖標?](http://stackoverflow.com/questions/616718/how-do-i-get-common-file-type-icons-in -C) – 2011-03-02 08:14:44

回答

2

如果您知道文件的圖標名稱,您可以使用ExtractAssociatedIcon函數。例如

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