public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
private int GetImageIndex(string p) { FileInfo fi = new FileInfo(p); int iIndex = -1; if (m_extensionIndexes.TryGetValue(fi.Extension.ToLower(CultureInfo.InvariantCulture), out iIndex)) return iIndex; SHFILEINFO shinfo = new SHFILEINFO(); Win32.SHGetFileInfo(fi.Extension, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_USEFILEATTRIBUTES | Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON); if (shinfo.hIcon != IntPtr.Zero) { System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon); return AddImage(fi.Extension, myIcon); } return 0; }