I Viwer um Icons auszulesen und zu speichern

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
MASH
Beiträge: 130
Registriert: 22.05.2005 17:43

I Viwer um Icons auszulesen und zu speichern

Beitrag von MASH »

Ich habe mal eine kleines (Winziges) Programm geschrieben mit dem man die Icons aus Executabels, Librarys, Stuerelementen, usw.. auslesen kann.

Die Source ist free und kann für eure Programme verwendet werden.

Code: Alles auswählen

DefType.s OpenFile,SaveFile,OpenLibrary
DefType.l IconIndex

UseJPEGImageEncoder()
UsePNGImageEncoder()

If OpenWindow(0,0,0,135,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible,"I Viwer")
  If CreateGadgetList(WindowID(0))
    Frame3DGadget(0,5,5,60,60,"Icon")

    Frame3DGadget(2,70,5,60,60,"Auswahl")
      ComboBoxGadget(3,75,30,50,160)
  
    ButtonGadget(4,5,75,60,20,"Laden")
    ButtonGadget(5,70,75,60,20,"Speichern")
  EndIf
  DisableGadget(3,1)
  DisableGadget(5,1)
EndIf
HideWindow(0,0)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
    
    Case #PB_Event_Gadget
      Select EventGadgetID()
        Case 3
          FreeGadget(1)
          ImageGadget(1,18,23,32,32,ExtractIcon_(0,@OpenLibrary,GetGadgetState(3)))

        Case 4
          OpenFile = OpenFileRequester("Datei öffnen","","Icon Dateien (*.*)|*.*",0);Dynamic Link Library (*.dll)|*.dll|Icon (*.ico)|*.ico",0) 
          If OpenFile <> ""
            IconIndex = ExtractIcon_(0,@OpenFile,-1) - 1
            If IconIndex >= 0
              OpenLibrary = OpenFile
              ClearGadgetItemList(3)
              For i = 0 To IconIndex
                AddGadgetItem(3,-1,Str(i))
              Next i

              SetGadgetState(3,0)
              
              FreeGadget(1)
              ImageGadget(1,18,23,32,32,ExtractIcon_(0,@OpenLibrary,GetGadgetState(3)))
              DisableGadget(3,0)
              DisableGadget(5,0)
            Else
              MessageRequester("I Viewer","Kein Icon in ''"+GetFilePart(OpenFile)+"'' gefunden!",0|16)
            EndIf
          EndIf
                
        Case 5
          SaveFile = SaveFileRequester("Datei öffnen","Icon_"+Str(GetGadgetState(3)),"BMP - Windows Bitmap|*.bmp|JPG - JPEG Datien|*.jpg|PNG - Portable Network Graphics|*.png",0)
          If SaveFile <> ""
            If PathFileExists_(SaveFile) = #FALSE
              CreateImage(0,32,32)
              StartDrawing(ImageOutput())
                DrawImage(ExtractIcon_(0,@OpenLibrary,GetGadgetState(3)),0,0)
              StopDrawing()
              
              Select SelectedFilePattern()
                Case 0
                  If GetExtensionPart(SaveFile) = "bmp"
                    SaveImage(0,SaveFile,#PB_ImagePlugin_BMP)
                  Else
                    SaveImage(0,SaveFile+".bmp",#PB_ImagePlugin_BMP)
                  EndIf
                
                Case 1
                  If GetExtensionPart(SaveFile.s) = "´jpeg"
                    SaveImage(0,SaveFile,#PB_ImagePlugin_JPEG,10)
                  Else
                    SaveImage(0,SaveFile+".jpeg",#PB_ImagePlugin_JPEG,10)
                  EndIf
                  
                Case 2
                  If GetExtensionPart(SaveFile) = "png"
                    SaveImage(0,SaveFile,#PB_ImagePlugin_PNG)
                  Else
                    SaveImage(0,SaveFile+".png",#PB_ImagePlugin_PNG)
                  EndIf
              EndSelect
              
              MessageRequester("I Viewer","Das Icon wurde erfolgreich abgespeichert.",0|64)
              
           EndIf
         EndIf
      EndSelect
  EndSelect
ForEver
; ExecutableFormat=Windows
; UseIcon=Icon.ico
; Executable=I Viewer.exe
; EOF
Viel Spaß mit dem Code.
Danke Mark S.