Seite 1 von 1

Icon eines Executable ändern?

Verfasst: 02.02.2009 19:05
von TuX.
Hallo,

ich bin z.Z. dabei einen kleinen Icon-Changer zu schreiben. Hier mein derzeitiger Code:

Code: Alles auswählen

Macro MAKEINTRESOURCE(I)
  (I)
EndMacro 


File$ = OpenFileRequester("","","Executables (*.exe)|*.exe",0)
IconFile$ = OpenFileRequester("","","Icons (*.ico)|*.ico",0)
If IconFile$ <> ""
  ReadFile(0,IconFile$)
    lof = Lof(0)
    imgBuffer = AllocateMemory(lof)
    memlen = MemorySize(imgBuffer)
    ReadData(0,imgBuffer,memlen)
  CloseFile(0)
  resHandle = BeginUpdateResource_(File$,#False)
    UpdateResource_(resHandle, #RT_GROUP_ICON, MAKEINTRESOURCE(200), #LANG_NEUTRAL, imgBuffer, memlen)
  EndUpdateResource_(resHandle,#False)
EndIf
Irgendwie werden die Icon-Files verschmissen. Hinterher zeigt Windows das "Icon-Nicht-Verfügbar"-Icon an:
Bild

Res-Hacker vom Nicht veränderten Programm:
Bild

Resource Hacker Screen vom veränderten Programm
Bild

Die 0 kommt also von meinem Tool

Wie kann ich die Icons richtig austauschen?

//edit: Verwendete PB Version ist 4.30 Vollversion

Verfasst: 02.02.2009 21:06
von Padraig
Sowas hat schon mal jemand gebastelt:

http://www.purebasic.fr/english/viewtopic.php?t=14019

Vielleicht hilft der Code ja weiter... :wink:

Gruß,

Pad

Verfasst: 02.02.2009 21:50
von TuX.
Hi,

diese Version kenne ich bereits - ich habe schon ausgiebig gesucht, daher habe ich ja auch das Makro mit dem Makeintressource. Ich werde nur aus dem von dir geposteten Thread nicht ganz schlau, weil eben Strukturen verwendet werden, die ja in meinem Tool überhaupt nicht vorhanden sind. Es muss doch eine Möglichkeit geben, die Ressourcen auch so upzudaten. Ich schätze, mein ganzes Problem hängt daran, dass der Speicherbuffer nicht richtig mit Daten gefüllt wird bzw. dass UpdateResource_() nicht richtig mit den Daten umgeht.

Man sieht ja an meinen Screenshots schon, dass das Icon, welches geladen und per UpdateResource eingefügt wird, nur eine Farbe hat, was nicht stimmt.

Fällt jemandem von euch ein "Verstoß gegen geltende API-Regeln" auf? ;-)

Verfasst: 03.02.2009 17:11
von Andesdaf
du änderst also mit deinem Code das Icon von einem Executable. Da wird
aber nur ein Windows-Icon angezeigt?

Verfasst: 03.02.2009 19:29
von TuX.
Vorher sah das Icon ganz normal aus. Nach meinen Änderungen durch das Programm zeigte mir Windows das "Kein-Icon" Icon an