Files
Pilz/Pilz.Win32/Internals/IconExtractor.cs
2020-09-24 11:21:53 +02:00

33 lines
1.1 KiB
C#

using System;
using global::System.Drawing;
using global::System.Runtime.InteropServices;
using global::Pilz.Win32.Native;
namespace Pilz.Win32.Internals
{
public class IconExtractor
{
/// <summary>
/// Extrahiert das Icon aus einer Datei oder aus einem Ordner.
/// </summary>
/// <param name="FilePath">Hier übergeben Sie den Pfad der Datei von dem das Icon extrahiert werden soll.</param>
/// <param name="Small">Bei übergabe von true wird ein kleines und bei false ein großes Icon zurück gegeben.</param>
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;
}
}
}