public string GetRegisteredIcon(string filePath) { var ext = GetFileEntryType(filePath); if (CachedIcons.ContainsKey(ext)) { return(CachedIcons[ext]); } var shinfo = new SHfileInfo(); Win32.SHGetFileInfo(filePath, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON); Icon icon; using (var origIcon = Icon.FromHandle(shinfo.hIcon)) { icon = (Icon)origIcon.Clone(); } Win32.DestroyIcon(shinfo.hIcon); var iconPath = saveIconLocal(icon, ext); CachedIcons.Add(ext, iconPath); return(iconPath); }
public static System.Drawing.Icon GetRegisteredIcon(string filePath) { var shinfo = new SHfileInfo(); Win32.SHGetFileInfo(filePath, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON); return(System.Drawing.Icon.FromHandle(shinfo.hIcon)); }
public static ImageSource GetRegisteredIcon(string filePath, int width, int height) { var shinfo = new SHfileInfo(); const uint SHGFI_ICON = 0x100; const uint SHGFI_SMALLICON = 0x1; SHGetFileInfo(filePath, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_SMALLICON); var icon = Icon.FromHandle(shinfo.hIcon); var hBitmap = icon.ToBitmap().GetHbitmap(); var bmpSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(width, height)); DeleteObject(hBitmap); return(bmpSource); }
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHfileInfo psfi, uint cbSizeFileInfo, uint uFlags);