/// <summary> /// 依据文件名读取图标,若指定文件不存在,则返回空值。 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static Icon GetIconByFileName(String fileName) { if (String.IsNullOrEmpty(fileName)) return null; if (!File.Exists(fileName)) return null; var shInfo = new SHFILEINFO(); //Use this to get the small Icon Win32.SHGetFileInfo(fileName, 0, ref shInfo, (uint) Marshal.SizeOf(shInfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON); //The icon is returned in the hIcon member of the shinfo struct Icon myIcon = Icon.FromHandle(shInfo.hIcon); return myIcon; }
public static extern IntPtr SHGetFileInfo(String pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
/// <summary> /// 依据文件名读取图标,若指定文件不存在,则返回空值。 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public static Icon GetIconByFileName(string fileName) { if (fileName == null || fileName.Equals(string.Empty)) { return null; } if (!File.Exists(fileName)) { return null; } SHFILEINFO shInfo = new SHFILEINFO(); //Use this to get the small Icon Win32.SHGetFileInfo(fileName, 0, ref shInfo, (uint)Marshal.SizeOf(shInfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON); //The icon is returned in the hIcon member of the shinfo struct System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shInfo.hIcon); return myIcon; }