private static Icon GetSystemIcon(string path, IconSizeEnum iconsize) { try { Win32.SHFILEINFO psfi = new Win32.SHFILEINFO(); int dwFileAttributes = 128; Win32.SHGFI uFlags = Win32.SHGFI.SHGFI_SYSICONINDEX; if (Win32.SHGetFileInfo(path, dwFileAttributes, out psfi, (uint)Marshal.SizeOf((object)psfi), uFlags) == 0) { return((Icon)null); } int i = psfi.iIcon; Guid riid = new Guid("46EB5926-582E-4017-9FDF-E8998DAA0950"); Win32.IImageList ppv; Win32.SHGetImageList((int)iconsize, ref riid, out ppv); IntPtr picon = IntPtr.Zero; int flags = 1; ppv.GetIcon(i, flags, ref picon); Icon icon = (Icon)Icon.FromHandle(picon).Clone(); Win32.DestroyIcon(psfi.hIcon); return(icon); } catch { } return((Icon)null); }
private static string ResolveShareName(string path) { Win32.SHFILEINFO shfi = new Win32.SHFILEINFO(); Win32.SHGFI dwflag = Win32.SHGFI.SHGFI_DISPLAYNAME | Win32.SHGFI.SHGFI_TYPENAME; int dwAttr = 0; dwflag = dwflag | Win32.SHGFI.SHGFI_USEFILEATTRIBUTES; dwAttr = 0x80; Win32.SHGetFileInfo(path, dwAttr, ref shfi, Win32.cbFileInfo, Convert.ToInt32(dwflag)); string result = shfi.szDisplayName; return(result); }
private static Icon GetIcon(string path) { try { Win32.SHFILEINFO psfi = new Win32.SHFILEINFO(); Win32.SHGFI uFlags = (Win32.SHGFI)(256 | (int)Globals.RuntimeSettings["defaultFileIconType"]); if (Win32.SHGetFileInfo(path, 0, out psfi, (uint)Marshal.SizeOf((object)psfi), uFlags) == 0 || psfi.hIcon == IntPtr.Zero) { return((Icon)null); } Icon icon = (Icon)Icon.FromHandle(psfi.hIcon).Clone(); Win32.DestroyIcon(psfi.hIcon); return(icon); } catch { } return((Icon)null); }
/// <summary> /// Get the associated Icon for a file or application, this method always returns /// an icon. If the strPath is invalid or there is no icon, the default icon is returned. /// </summary> public static Icon GetFolderIcon(String path, Boolean small, Boolean overlays) { Win32.SHFILEINFO info = new Win32.SHFILEINFO(true); Int32 cbFileInfo = Marshal.SizeOf(info); Win32.SHGFI flags = Win32.SHGFI.Icon | Win32.SHGFI.UseFileAttributes; if (small) { flags |= Win32.SHGFI.SmallIcon; } else { flags |= Win32.SHGFI.LargeIcon; } if (overlays) { flags |= Win32.SHGFI.AddOverlays; // Get overlays too... } Win32.SHGetFileInfo(path, 0x00000010, out info, (UInt32)cbFileInfo, flags); Icon icon = (Icon)Icon.FromHandle(info.hIcon).Clone(); Win32.DestroyIcon(info.hIcon); return(icon); }
public static extern int SHGetFileInfo(string pszPath, int dwFileAttributes, out Win32.SHFILEINFO psfi, uint cbfileInfo, Win32.SHGFI uFlags);