Seite 1 von 1

ExtractIconEx_()-Demo

Verfasst: 15.07.2005 10:57
von Kiffi
Hallo,

die Windows API-Funktion ExtractIconEx() ermöglicht es, unterschiedliche
Formate aus Icons auszulesen. In nachfolgendem Beispiel werden die in
der Datei 'pifmgr.dll' vorhandenen Icons und deren Formate ermittelt und
dargestellt.

Code: Alles auswählen

Structure SHELLICONLIST
  hLarge.l
  hSmall.l
EndStructure

Enumeration
  #frmMain
  #lvwLargeIcons
  #lvwSmallIcons
EndEnumeration
 

; API-Definition:
; UINT ExtractIconEx(
;  LPCTSTR lpszFile,
;  int nIconIndex,
;  hIcon *phiconLarge,
;  hIcon *phiconSmall,
;  UINT nIcons
; );

; Pfad und Name ggf. anpassen
sIcon.s = "C:\WINNT\system32\pifmgr.dll"

If FileSize(sIcon) = -1
  MessageRequester("","Datei " + sIcon + " ist nicht vorhanden!")
  End
EndIf  

; Anzahl Dateien in der Datei auslesen
AnzahlIcons = ExtractIconEx_(sIcon,-1,0,0,0)

If AnzahlIcons = 0
  MessageRequester("","Keine Icons gefunden!")
  End
EndIf

myIcon.SHELLICONLIST

If OpenWindow(#frmMain, 0, 0, 500, 400, #PB_Window_SystemMenu | #PB_Window_ScreenCentered , "ExtractIconEx_()-Demo")
  
  If CreateGadgetList(WindowID(#frmMain))
    
    ListIconGadget(#lvwLargeIcons, 0, 0, 250, 400, "", 0)
    ChangeListIconGadgetDisplay(#lvwLargeIcons, 0)
    
    ListIconGadget(#lvwSmallIcons, 251, 0, 249, 400, "", 0)
    ChangeListIconGadgetDisplay(#lvwSmallIcons, 2)
    
    ; Auslesen aller Icons
    
    For Counter = 0 To AnzahlIcons - 1
      
      RetVal = ExtractIconEx_(sIcon,Counter,@myIcon\hLarge,@myIcon\hSmall,1)
      
      If RetVal
        
        Debug myIcon\hLarge
        Debug myIcon\hSmall
      
        AddGadgetItem(#lvwLargeIcons,-1,"",myIcon\hLarge)
        AddGadgetItem(#lvwSmallIcons,-1,"",myIcon\hSmall)
        
      EndIf
      
    Next
    
    Repeat
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
      
    CloseWindow(#frmMain)
    
  EndIf
  
EndIf
Thanks to Justy für den entscheidenden Hinweise zur ExtractIconEx_()-API!

Grüße ... Kiffi