vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · ImageList   |   VB-Versionen: VB4, VB5, VB620.04.01
Icon einer Anwendung einer ImageList hinzufügen

Dieser Tipp zeigt, wie Sie das Symbol einer Anwendung (EXE/DLL) einem ImageList-Control hinzufügen können.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  26.711 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Eine häufig gestellte Frage ist: Wie ermittle ich das Icon (Symbol) einer bestimmten Anwendung oder DLL-Datei und wie bekomme ich das Icon dann in ein ImageList-Steuerelement?

Im nachfolgenden stellen wir Ihnen zwei Routinen vor:
1) Ermitteln des Icons einer Anwendung
2) Hinzufügen des Icons zu einer ImageList

' zunächst die benötigten API-Deklarationen
Private Type TPictDesc
  cbSizeofStruct As Long
  PicType As Long
  hImage As Long
  xExt As Long
  yExt As Long
End Type
 
Private Type TGUID
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(0 To 7) As Byte
End Type
 
Private Declare Function ExtractAssociatedIcon Lib "shell32.dll" _
  Alias "ExtractAssociatedIconA" ( _
  ByVal hInst As Long, _
  ByVal lpIconPath As String, _
  lpiIcon As Long) As Long
 
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" ( _
  ByRef lpPictDesc As TPictDesc, _
  ByRef RIID As TGUID, _
  ByVal fPictureOwnsHandle As Long, _
  ByRef IPic As IPicture) As Long

1. Anwendungssymbol ermitteln
Die Funktion exeGetIcon erwartet als ersten Parameter den exakten Dateinamen der Datei und den Index des Symbols (0 = Standardsymbol). Kann das Symbol ermittelt werden wird dieses als Picture zurückgegeben.

Private Function exeGetIcon(ByVal sFile As String, _
  ByVal Index As Long) As Picture
 
  ' Icon aus .EXE/.DLL - Datei laden
 
  Dim Pic As Picture
  Dim PicDes As TPictDesc
  Dim IID_IDispatch As TGUID
  Dim Handle As Long
 
  Handle = ExtractAssociatedIcon(App.hInstance, _
    sFile, Index)
  If Handle = 0 Then Exit Function
 
  PicDes.cbSizeofStruct = Len(PicDes)
  PicDes.PicType = vbPicTypeIcon
  PicDes.hImage = Handle
  IID_IDispatch.Data1 = &H20400
  IID_IDispatch.Data4(0) = &HC0
  IID_IDispatch.Data4(7) = &H46
  Call OleCreatePictureIndirect(PicDes, _
    IID_IDispatch, True, Pic)
 
  Set exeGetIcon = Pic
End Function

2. Symbol einer ImageList hinzufügen
Aufbauend auf die Funktion zum Ermitteln des Anwendungs-Symbols zeigt die nachfolgende Routine, wie Sie dieses einem ImageList-Steuerelement hinzufügen können.

Die Prozedur AddIconToImageList erwartet als ersten Parameter das ImageList-Control, dann den exakten Dateinamen der Anwendung (für das Symbol) und den Index des Symbols (0=Standard-Symbol).

Private Sub AddIconToImageList(imgList As ImageList, _
  sFile As String, iIndex As Integer)
 
  ' Anwendungs-Icon einer ImageList hinzufügen
 
  Dim Index As Integer
  Dim imgX As ListImage
 
  With imgList.ListImages
    Index = .Count + 1
    Set imgX = .Add(Index, , exeGetIcon(sFile, _
      iIndex))
  End With
End Sub

Beispielsaufruf:

AddIconToImageList ImageList1, _
  "c:\windows\system\explorer.exe", 0

Dieser Tipp wurde bereits 26.711 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel