Hallo zusammen,
mit folgendem Code zur Extraktion von Icons aus einer Exe-Datei erhalte ich in Zeile#24 die im Anhang befindliche
mit folgendem Code zur Extraktion von Icons aus einer Exe-Datei erhalte ich in Zeile#24 die im Anhang befindliche
NullReferenceExeption
und ich weiß weder, warum, noch, wie ich sie abfangen oder gar verhindern kann. Vielleicht könnt Ihr mir die Augen öffnen.VB.NET-Quellcode
- Imports System.Runtime.InteropServices
- Friend Class FrmMain
- <DllImport("User32.dll", CharSet:=CharSet.Unicode)> Private Shared Function PrivateExtractIcons(IconPath As String, IconIndex As Integer, Width As Integer, Height As Integer, phicon As IntPtr(), ByRef piconid As IntPtr, IconCount As Integer, flags As Integer) As Integer : End Function
- <DllImport("Shell32.dll", EntryPoint:="ExtractIcon", SetLastError:=True)> Shared Function ExtractIcon(IconHandle As IntPtr, IconPath As String, IconIndex As Integer) As Integer : End Function
- <DllImport("user32.dll", EntryPoint:="DestroyIcon", SetLastError:=True)> Shared Function DestroyIcon(IconHandle As IntPtr) As Integer : End Function
- Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.TransparencyKey = Color.Wheat
- BackColor = Me.TransparencyKey
- ExtractIconsFrom("C:\Program Files\Mozilla Firefox\Firefox.exe")
- End Sub
- Private Sub ExtractIconsFrom(FilePath As String)
- Dim IconCount = ExtractIcon(IntPtr.Zero, FilePath, -1)
- For Each ItemSize In {512, 256, 128, 64}
- Dim HIcon(IconCount - 1) As IntPtr
- Dim ActualIconCount = PrivateExtractIcons(FilePath, 0, ItemSize, ItemSize, HIcon, IntPtr.Zero, HIcon.Count, 0)
- For i = 0 To ActualIconCount - 1
- Try
- If HIcon Is Nothing Then Stop
- If HIcon(i) = IntPtr.Zero Then Stop
- FlowLayoutPanel1.Controls.Add(New PictureBox With {.Width = ItemSize + 10, .Height = ItemSize + 10, .Image = Icon.FromHandle(HIcon(i)).ToBitmap})
- Catch NREx As NullReferenceException
- Exit For
- End Try
- Next
- HIcon.ToList.ForEach(Sub(x) DestroyIcon(x))
- Exit For
- Next
- End Sub
- End Class
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.