/// <summary> /// Gets icon associated with the givin file. /// </summary> /// <param name="fileName">The file path (both absolute and relative paths are valid).</param> /// <param name="flags">Specifies which icon to be retrieved (Larg, Small, Selected, Link Overlay and Shell Size).</param> /// <returns>A System.Drawing.Icon associated with the givin file.</returns> public static Icon GetAssociatedIcon(string fileName, IconFlags flags) { flags |= IconFlags.Icon; SHFILEINFO fileInfo = new SHFILEINFO(); IntPtr result = Win32.SHGetFileInfo(fileName, 0, ref fileInfo, (uint)Marshal.SizeOf(fileInfo), (SHGetFileInfoFlags) flags); if (fileInfo.hIcon == IntPtr.Zero) return null; return Icon.FromHandle(fileInfo.hIcon); }
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, SHGetFileInfoFlags uFlags);