using System; using global::System.Drawing; using global::System.Runtime.InteropServices; using global::Pilz.Win32.Native; namespace Pilz.Win32.Internals { public class IconExtractor { /// /// Extrahiert das Icon aus einer Datei oder aus einem Ordner. /// /// Hier übergeben Sie den Pfad der Datei von dem das Icon extrahiert werden soll. /// Bei übergabe von true wird ein kleines und bei false ein großes Icon zurück gegeben. public static Icon ExtractIcon(string FilePath, bool Small) { Icon icon; var shinfo = new SHFILEINFO(); LibShell32.SHGetFileInfo(FilePath, 0U, ref shinfo, (uint)Math.Truncate((decimal)Marshal.SizeOf(shinfo)), SHFILEINFO.SHGFI_ICON | (Small ? SHFILEINFO.SHGFI_SMALLICON : SHFILEINFO.SHGFI_LARGEICON)); try { icon = Icon.FromHandle(shinfo.hIcon); } catch (Exception ex) { icon = null; } return icon; } } }