Wie speichere ich in VB.NET 2003 ein mit SHGetFileInfo extrahiertes Icon unter einem anderen Namen?

Antwort

Um ein mit `SHGetFileInfo` extrahiertes Icon in VB.NET 2003 unter einem anderen Namen zu speichern, gehst du wie folgt vor: 1. **Icon extrahieren:** Mit `SHGetFileInfo` erhältst du einen Handle auf das Icon (`hIcon`). 2. **Icon-Objekt erstellen:** Erzeuge daraus ein .NET-`Icon`-Objekt. 3. **Icon speichern:** Speichere das Icon mit der gewünschten Methode und unter dem gewünschten Namen. Hier ein Beispielcode: ```vb.net Imports System.Runtime.InteropServices Imports System.Drawing Imports System.IO Public Class IconExtractor <StructLayout(LayoutKind.Sequential)> Public Structure SHFILEINFO Public hIcon As IntPtr Public iIcon As Integer Public dwAttributes As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szDisplayName As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> Public szTypeName As String End Structure <DllImport("shell32.dll")> Public Shared Function SHGetFileInfo( _ ByVal pszPath As String, _ ByVal dwFileAttributes As Integer, _ ByRef psfi As SHFILEINFO, _ ByVal cbFileInfo As Integer, _ ByVal uFlags As Integer) As IntPtr End Function <DllImport("user32.dll", SetLastError:=True)> Public Shared Function DestroyIcon(ByVal hIcon As IntPtr) As Boolean End Function Public Const SHGFI_ICON As Integer = &H100 Public Const SHGFI_LARGEICON As Integer = &H0 ' 32x32 Public Const SHGFI_SMALLICON As Integer = &H1 ' 16x16 Public Shared Sub SaveIcon(ByVal filePath As String, ByVal saveAs As String) Dim shinfo As New SHFILEINFO() Dim hImg As IntPtr = SHGetFileInfo(filePath, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_LARGEICON) If shinfo.hIcon <> IntPtr.Zero Then Dim icon As Icon = Icon.FromHandle(shinfo.hIcon) Using fs As New FileStream(saveAs, FileMode.Create) icon.Save(fs) End Using DestroyIcon(shinfo.hIcon) End If End Sub End Class ``` **Verwendung:** ```vb.net IconExtractor.SaveIcon("C:\Windows\notepad.exe", "C:\Temp\notepad_icon.ico") ``` **Hinweise:** - Der Code speichert das extrahierte Icon als `.ico`-Datei unter dem gewünschten Namen. - Achte darauf, den Icon-Handle nach der Verwendung mit `DestroyIcon` freizugeben, um Speicherlecks zu vermeiden. Weitere Infos zu [SHGetFileInfo (Microsoft Doku)](https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shgetfileinfoa).

KI fragen

Verwandte Fragen

Wie ermittelt man in VB.NET 2003 die TransparentColor beim Extrahieren eines Icons mit SHGetFileInfo?

In VB.NET 2003 gibt es keine direkte Möglichkeit, die Transparenzfarbe (TransparentColor) eines Icons zu ermitteln, das mit `SHGetFileInfo` extrahiert wurde, da das von `SHGetFileInfo` zurüc... [mehr]

Wie lade ich mit VB.NET 2003 ein Icon als Image in eine PictureBox?

Um in VB.NET 2003 ein Icon (.ico-Datei) in eine PictureBox als Image anzuzeigen, musst du das Icon zunächst in ein Bitmap-Objekt umwandeln, da die PictureBox kein Icon direkt anzeigen kann, sonde... [mehr]

Wie speichere ich in VB.NET 2003 ein vorhandenes Icon (*.ico) als PNG-Bild?

In VB.NET 2003 kannst du ein vorhandenes Icon (*.ico) als PNG-Bild speichern, indem du das Icon in ein Bitmap-Objekt konvertierst und dieses dann als PNG exportierst. Die .NET Framework-Version von 20... [mehr]

Wie kann ein in eine PictureBox geladenes Icon mit VB.NET 2003 wieder als Icon gespeichert werden?

Um ein in eine `PictureBox` geladene Icon-Datei in VB.NET 2003 wieder als `.ico`-Datei zu speichern, musst du beachten, dass die `PictureBox.Image`-Eigenschaft ein `Image`-Objekt ist. Das direkte Spei... [mehr]

Wie lädt man in VB.NET 2003 ein Icon in eine PictureBox?

In VB.NET 2003 kannst du ein Icon in eine PictureBox laden, indem du das Icon zuerst in ein Bitmap-Objekt umwandelst, da die PictureBox kein Icon-Objekt direkt anzeigen kann. Hier ein Beispiel: ```vb... [mehr]

Wie ändere ich in VB.NET 2003 nachträglich das Icon eines bestimmten TreeNode?

Um in VB.NET 2003 nachträglich das Icon (genauer: das Image) eines bestimmten TreeNode in einem TreeView zu ändern, gehst du wie folgt vor: 1. **Stelle sicher, dass dein TreeView eine Image... [mehr]

Wie kann ich in VB.NET ein JPG-Bild beim Umwandeln in ein GIF-Bild gleichzeitig verkleinern oder vergrößern?

Um in VB.NET ein JPG-Bild in ein GIF-Bild umzuwandeln und dabei gleichzeitig die Größe zu ändern, kannst du die Klassen `System.Drawing.Image` und `System.Drawing.Bitmap` verwenden. Hi... [mehr]

Wie kann ich in VB.NET 2003 ein JPG-Bild in ein GIF-Bild umwandeln?

In VB.NET 2003 kannst du ein JPG-Bild in ein GIF-Bild umwandeln, indem du die Klassen aus dem Namespace `System.Drawing` verwendest. Hier ein einfaches Beispiel, wie das funktioniert: ```vb.net Impor... [mehr]

Kann ich in VB.NET 2003 mit Val("ABC02") den im String enthaltenen Zahlenwert "2" extrahieren?

Mit der Funktion `Val("ABC02")` in VB.NET 2003 erhältst du als Ergebnis den Wert `0`. Die Funktion `Val` liest nur so lange Zeichen aus dem String, wie sie als Zahl interpretiert werden... [mehr]

Wie kann ich in VB.NET 2003 eine Zeile in einer RTF-Box bei Enter-Taste automatisch vor dem Zeilenvorschub mit "°" beenden?

Um in VB.NET 2003 in einer RichTextBox beim Drücken der Enter-Taste vor dem Zeilenvorschub automatisch ein "°" einzufügen, kannst du das KeyDown- oder KeyPress-Ereignis der Ric... [mehr]