Imports System.Drawing
Imports System.Runtime.InteropServices
Imports Pilz.Win32.Mapped
Imports Pilz.Win32.Native
Namespace 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 Shared Function ExtractIcon(FilePath As String, size As SystemIconSize) As Icon
Dim icon As Icon
Dim shinfo As New SHFILEINFO
Dim small As Boolean = size = SystemIconSize.Small
Shell32.SHGetFileInfo(FilePath, 0, shinfo, Math.Truncate(Marshal.SizeOf(shinfo)), SHFILEINFO.SHGFI_ICON Or If(small, SHFILEINFO.SHGFI_SMALLICON, SHFILEINFO.SHGFI_LARGEICON))
Try
icon = Icon.FromHandle(shinfo.hIcon)
Catch ex As Exception
icon = Nothing
End Try
Return icon
End Function
End Class
End Namespace