Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I use the following code, not sure if it transparent backgrounds are supported but you could give it a try:</p> <pre><code>private const uint SHGFI_ICON = 0x100; private const uint SHGFI_LARGEICON = 0x0; private const uint SHGFI_SMALLICON = 0x1; private const uint SHGFI_DISPLAYNAME = 0x00000200; private const uint SHGFI_TYPENAME = 0x400; public static Icon GetSmallFileIcon(this FileInfo file) { if (file.Exists) { SHFILEINFO shFileInfo = new SHFILEINFO(); SHGetFileInfo(file.FullName, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo), SHGFI_ICON | SHGFI_SMALLICON); return Icon.FromHandle(shFileInfo.hIcon); } else return SystemIcons.WinLogo; } public static Icon GetSmallFileIcon(string fileName) { return GetSmallFileIcon(new FileInfo(fileName)); } public static Icon GetLargeFileIcon(this FileInfo file) { if (file.Exists) { SHFILEINFO shFileInfo = new SHFILEINFO(); SHGetFileInfo(file.FullName, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo), SHGFI_ICON | SHGFI_LARGEICON); return Icon.FromHandle(shFileInfo.hIcon); } else return SystemIcons.WinLogo; } public static Icon GetLargeFileIcon(string fileName) { return GetLargeFileIcon(new FileInfo(fileName)); } [StructLayout(LayoutKind.Sequential)] public struct SHFILEINFO { public SHFILEINFO(bool b) { hIcon = IntPtr.Zero; iIcon = IntPtr.Zero; dwAttributes = 0; szDisplayName = ""; szTypeName = ""; } public IntPtr hIcon; public IntPtr iIcon; public uint dwAttributes; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szDisplayName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string szTypeName; }; [DllImport("shell32.dll")] public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload