亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中如何獲取文件圖標

2020-01-24 01:13:10
字體:
來源:轉載
供稿:網友

 本文給大家介紹如何去獲取一個文件的關聯圖標呢?現總結如下:

  首先明確問題:獲取一個文件的關聯圖標或者是某個類型文件的顯示圖標。

  在網上搜了一圈,發現方法還是比較多的,但是應用C#進行獲取的方法不多。我選擇一種用.Net庫的方法。

 使用的類:

    System.Drawing.Icon ,位于System.Drawing 命名空間。

  具體方法:  

    System.Drawing.Icon 類中的靜態方法:public static Icon ExtractAssociatedIcon(string filePath)

  此方法接收一個文件路徑,返回一個 Icon 類型的對象。此對象既是指定文件的 Icon 圖標對象。

  此 Icon 類提供了 Save 方法,可以將 Icon 文件寫入流中,進而保存至硬盤文件。

  當然要在程序中顯示也是可以的,Icon 類提供了 ToBitmap 方法,可以將 Icon 文件轉換為 Bitmap。Bitmap 就可以在 PictureBox 中顯示了。

  如果要根據后綴名來獲取文件圖標,那要怎么辦呢?我想了一個比較笨的辦法??创a~

string fileName = "tmp." + houzhuiming;    File.Create(fileName).Close();    Image img = System.Drawing.Icon.ExtractAssociatedIcon(fileName).ToBitmap();    File.Delete(fileName);

  如此,新建一個指定后綴名的文件,獲取圖標后直接刪除,就能獲得指定文件后綴名的圖標了。嘻嘻~

下面給大家分享一段代碼介紹C#獲取文件關聯圖標

using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;using System.Drawing;using Microsoft.Win32;namespace ifmdp.DeviceManager{class SystemIcon{[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public struct SHFILEINFO{public IntPtr hIcon;public int iIcon;public uint dwAttributes;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]public string szDisplayName;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]public string szTypeName;}[DllImport("Shell32.dll", EntryPoint = "SHGetFileInfo", SetLastError = true, CharSet = CharSet.Auto)]public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags);[DllImport("User32.dll", EntryPoint = "DestroyIcon")]public static extern int DestroyIcon(IntPtr hIcon);#region API 參數的常量定義public enum FileInfoFlags : uint{SHGFI_ICON = 0x000000100, // get iconSHGFI_DISPLAYNAME = 0x000000200, // get display nameSHGFI_TYPENAME = 0x000000400, // get type nameSHGFI_ATTRIBUTES = 0x000000800, // get attributesSHGFI_ICONLOCATION = 0x000001000, // get icon locationSHGFI_EXETYPE = 0x000002000, // return exe typeSHGFI_SYSICONINDEX = 0x000004000, // get system icon indexSHGFI_LINKOVERLAY = 0x000008000, // put a link overlay on iconSHGFI_SELECTED = 0x000010000, // show icon in selected stateSHGFI_ATTR_SPECIFIED = 0x000020000, // get only specified attributesSHGFI_LARGEICON = 0x000000000, // get large iconSHGFI_SMALLICON = 0x000000001, // get small iconSHGFI_OPENICON = 0x000000002, // get open iconSHGFI_SHELLICONSIZE = 0x000000004, // get shell size iconSHGFI_PIDL = 0x000000008, // pszPath is a pidlSHGFI_USEFILEATTRIBUTES = 0x000000010, // use passed dwFileAttributeSHGFI_ADDOVERLAYS = 0x000000020, // apply the appropriate overlaysSHGFI_OVERLAYINDEX = 0x000000040 // Get the index of the overlay}public enum FileAttributeFlags : uint{FILE_ATTRIBUTE_READONLY = 0x00000001,FILE_ATTRIBUTE_HIDDEN = 0x00000002,FILE_ATTRIBUTE_SYSTEM = 0x00000004,FILE_ATTRIBUTE_DIRECTORY = 0x00000010,FILE_ATTRIBUTE_ARCHIVE = 0x00000020,FILE_ATTRIBUTE_DEVICE = 0x00000040,FILE_ATTRIBUTE_NORMAL = 0x00000080,FILE_ATTRIBUTE_TEMPORARY = 0x00000100,FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200,FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400,FILE_ATTRIBUTE_COMPRESSED = 0x00000800,FILE_ATTRIBUTE_OFFLINE = 0x00001000,FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000,FILE_ATTRIBUTE_ENCRYPTED = 0x00004000}#endregion/// <summary>/// 獲取文件類型的關聯圖標/// </summary>/// <param name="fileName">文件類型的擴展名或文件的絕對路徑</param>/// <param name="isLargeIcon">是否返回大圖標</param>/// <returns>獲取到的圖標</returns>public static Icon GetIcon(string fileName, bool isLargeIcon){SHFILEINFO shfi = new SHFILEINFO();IntPtr hI;if (isLargeIcon)hI = SHGetFileInfo(fileName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), (uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_USEFILEATTRIBUTES | (uint)FileInfoFlags.SHGFI_LARGEICON);elsehI = SHGetFileInfo(fileName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), (uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_USEFILEATTRIBUTES | (uint)FileInfoFlags.SHGFI_SMALLICON);Icon icon = Icon.FromHandle(shfi.hIcon).Clone() as Icon;DestroyIcon(shfi.hIcon); //釋放資源return icon;}/// <summary> /// 獲取文件夾圖標/// </summary> /// <returns>圖標</returns> public static Icon GetDirectoryIcon(bool isLargeIcon){SHFILEINFO _SHFILEINFO = new SHFILEINFO();IntPtr _IconIntPtr;if (isLargeIcon){_IconIntPtr = SHGetFileInfo(@"", 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), ((uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_LARGEICON));}else{_IconIntPtr = SHGetFileInfo(@"", 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), ((uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_SMALLICON));}if (_IconIntPtr.Equals(IntPtr.Zero)) return null;Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);return _Icon;}}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本一道久久a久久精品逆3p| 日韩亚洲第一页| 亚洲人线精品午夜| 91精品在线影院| 国产视频精品va久久久久久| 久久视频国产精品免费视频在线| 欧美另类极品videosbest最新版本| 国产成人97精品免费看片| 国产精品极品美女粉嫩高清在线| 国产一区二区丝袜| 98精品国产自产在线观看| 国产网站欧美日韩免费精品在线观看| 国产精品美女视频网站| 青草成人免费视频| 国产美女扒开尿口久久久| 成人性生交大片免费观看嘿嘿视频| 欧美做爰性生交视频| 国产日韩在线观看av| 亚洲第一区在线观看| 欧美激情喷水视频| 在线播放国产一区中文字幕剧情欧美| 久久久国产精品一区| 日韩大陆欧美高清视频区| 亚洲国产成人爱av在线播放| 久久久久久欧美| 国产免费成人av| 91国语精品自产拍在线观看性色| 日韩欧美国产中文字幕| 57pao精品| 欧美激情精品久久久久久免费印度| 国产美女精品视频| 国产午夜精品美女视频明星a级| 亚洲成人激情在线| 亚洲视频777| 国产精品丝袜白浆摸在线| 色综合天天狠天天透天天伊人| 日韩电影中文字幕| 亚洲第一福利网站| 国产精品视频一区二区高潮| 91亚洲精华国产精华| 日韩av综合网站| 国产精品激情自拍| 欧美与黑人午夜性猛交久久久| 亚洲最新中文字幕| 日韩大片免费观看视频播放| 日韩欧美在线字幕| 亚洲精品一区二区久| 国产色视频一区| 久久久女人电视剧免费播放下载| 国产精品日韩在线播放| 97精品久久久中文字幕免费| 久久99久国产精品黄毛片入口| 欧美一级片久久久久久久| 亚洲第一中文字幕| 欧美激情视频在线| 久久久成人精品| 成人两性免费视频| 欧美在线影院在线视频| 国产精品久久久久久久美男| 久久中文字幕一区| 91高清视频免费| 91国产精品视频在线| 91视频国产高清| 国a精品视频大全| 久久久噜噜噜久久| 欧美午夜无遮挡| 欧美国产视频日韩| 日韩成人在线播放| 欧美精品第一页在线播放| 日韩激情视频在线| 欧美成年人视频网站欧美| 国产精品免费久久久| 久久久999精品| 久久久www成人免费精品张筱雨| 亚洲国产精品女人久久久| 欧美日韩国产中文精品字幕自在自线| 久久久噜噜噜久久中文字免| 国产精品久久中文| 在线观看精品自拍私拍| 亚洲精品视频中文字幕| 精品成人久久av| 欧美日韩亚洲视频一区| 国产日韩精品一区二区| 中文字幕视频在线免费欧美日韩综合在线看| 日韩中文字幕视频| 日韩av在线一区| 国产精品久久9| 中文字幕日韩在线视频| 粉嫩av一区二区三区免费野| 亚洲人永久免费| 日韩经典一区二区三区| 日本成人黄色片| 久久精品99国产精品酒店日本| 亚洲伊人久久综合| 永久555www成人免费| 国产日韩综合一区二区性色av| 国产在线98福利播放视频| 欧美激情一级二级| 都市激情亚洲色图| 日韩av综合中文字幕| 欧美激情网友自拍| 欧美精品电影在线| 国产成人精品日本亚洲| 91日本视频在线| 欧美性少妇18aaaa视频| 欧亚精品在线观看| 国产香蕉精品视频一区二区三区| 精品久久中文字幕| 一本大道亚洲视频| 91av免费观看91av精品在线| 久久久久久国产免费| 成人免费视频xnxx.com| 亚洲一区二区福利| 8050国产精品久久久久久| 精品视频久久久| 色综合亚洲精品激情狠狠| 亚洲欧美变态国产另类| 国产视频久久久久久久| 欧美一级片久久久久久久| 欧美一级黑人aaaaaaa做受| 欧美激情国产精品| 92国产精品久久久久首页| 日韩在线观看免费全集电视剧网站| 成人精品在线观看| 国产一区二区三区丝袜| 国产91对白在线播放| 精品无码久久久久久国产| 亚洲欧洲日本专区| 久久视频在线看| 久久久久久久91| 日韩精品视频在线观看网址| 成人欧美在线观看| 欧美日韩午夜激情| 国产精品久久久久久久久久三级| 富二代精品短视频| 性欧美xxxx交| 97久久久久久| 九九九久久久久久| 欧洲亚洲在线视频| 欧美人在线视频| 中文字幕欧美日韩在线| 在线观看欧美日韩国产| 成人激情视频网| 亚洲欧美制服丝袜| 日韩中文理论片| 国产精品777| 亚洲第一天堂av| 国产v综合ⅴ日韩v欧美大片| 久久久久久久97| 92国产精品久久久久首页| 国产午夜精品久久久| 国内精品久久久久久久久| 精品人伦一区二区三区蜜桃免费| www.精品av.com| 久久久影视精品| 91久久精品美女高潮| 97精品国产aⅴ7777| 欧美www视频在线观看| 欧美电影在线免费观看网站| 岛国av一区二区在线在线观看| 国产亚洲精品va在线观看| 热久久这里只有| 中文字幕欧美视频在线| 日韩欧美大尺度|