Icon eines Executable ändern?

Anfängerfragen zum Programmieren mit PureBasic.
TuX.
Beiträge: 6
Registriert: 02.02.2009 18:33

Icon eines Executable ändern?

Beitrag 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
Padraig
Beiträge: 6
Registriert: 08.09.2008 16:48

Beitrag 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
TuX.
Beiträge: 6
Registriert: 02.02.2009 18:33

Beitrag 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? ;-)
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

du änderst also mit deinem Code das Icon von einem Executable. Da wird
aber nur ein Windows-Icon angezeigt?
Win11 x64 | PB 6.20
TuX.
Beiträge: 6
Registriert: 02.02.2009 18:33

Beitrag von TuX. »

Vorher sah das Icon ganz normal aus. Nach meinen Änderungen durch das Programm zeigte mir Windows das "Kein-Icon" Icon an
Antworten