dd
This commit is contained in:
38
Pilz.Win32/Internals/IconExtractor.vb
Normal file
38
Pilz.Win32/Internals/IconExtractor.vb
Normal file
@@ -0,0 +1,38 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports Pilz.Win32.Native
|
||||
|
||||
Namespace 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 Shared Function ExtractIcon(ByVal FilePath As String, ByVal Small As Boolean) As Icon
|
||||
Dim hImgSmall As IntPtr
|
||||
Dim hImgLarge As IntPtr
|
||||
Dim shinfo As New SHFILEINFO
|
||||
|
||||
If Small Then
|
||||
hImgSmall = LibShell32.SHGetFileInfo(FilePath, 0, shinfo, CUInt(Math.Truncate(Marshal.SizeOf(shinfo))), SHFILEINFO.SHGFI_ICON Or SHFILEINFO.SHGFI_SMALLICON)
|
||||
Else
|
||||
hImgLarge = LibShell32.SHGetFileInfo(FilePath, 0, shinfo, CUInt(Math.Truncate(Marshal.SizeOf(shinfo))), SHFILEINFO.SHGFI_ICON Or SHFILEINFO.SHGFI_LARGEICON)
|
||||
End If
|
||||
|
||||
Dim icon As Icon
|
||||
|
||||
Try
|
||||
icon = Icon.FromHandle(shinfo.hIcon)
|
||||
Catch ex As Exception
|
||||
icon = Nothing
|
||||
End Try
|
||||
|
||||
Return icon
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
Reference in New Issue
Block a user