User soll Icon für .exe selber wählen können

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

User soll Icon für .exe selber wählen können

Beitrag von Delle »

Hallo,

mit einem Tool soll ein User ein weiteres (eigenes) Tool erstellen können und hierzu auch ein eigenes Icon verwenden dürfen.

In dem Tool ist also eine fertige .exe angehängt, was abgesplittet und als .exe gespeichert wird. Da werden dann noch paar Daten drangehangen und der User soll eben für diese .exe das Icon selber wählen können.

Wie macht man sowas?
PB 6.21 | Win 11
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Du könntest Dich ein wenig drüber schlau machen und vielleicht rausfinden, ob das Icon immer an der gleichen Stelle der EXE gespeichert wird. Gut möglich, daß das so ist, kann aber auch sein, daß die Stelle variiert. Dennoch gibt es einen Header für die EXE (wotsit.org nachschlagen), und wenn Du den ausliest, kriegst Du auf jeden Fall die Stelle raus, wo das Icon zu finden ist.
Ich vermute aber eher, daß es immer an der gleichen Stelle ist, sonst müßte Windows ja bei jeder EXE, die es anzeigt, extra den Header auslesen um das Icon zu finden.

Es gibt ein Tool namens ResourceHacker, damit kann man Icons aus bestehenden EXEn austauschen. Hier ist jede Ressource irgendwie durchnumeriert. Vielleicht hilft Dir das weiter, evtl. gibt es einen SourceCode des Programms.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Beitrag von Kekskiller »

Die Icons werden als Ressource abgespeichert, normalerweise ist die Icon-Ressource mit Nr. 0 das Icon, welches im Explorer angezeigt wird, es gibt natürlich noch mehr Icons, aber die werden auch nur im "Icon auswählen"-Dialog angezeigt. Man findet auf http://www.wotsit.org/ sehr schnell ein aufschlussreiches Dokument über den Aufbau -> "WINHDR.TXT".
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

ZeHa hat geschrieben: Ich vermute aber eher, daß es immer an der gleichen Stelle ist, sonst müßte Windows ja bei jeder EXE, die es anzeigt, extra den Header auslesen um das Icon zu finden.
In der Tat liest Windows immer die Header aus um das Icon zu ermitteln. Ich hab mich auch mal ein bischen mit dem PE-Format (NT .exe) beschäftigt. Aber das ist garnichtmal so unkompliziert. Allerdings durchaus machbar das Icon auszutauschen.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Folgende 3 API-Aufrufe werden benötigt:
BeginUpdateResource
UpdateResource
EndUpdateResource
Unter NT als Unicode verfügbar, unter Win9x wird "Unicows.dll" benötigt.

Beispiel mit Manifest statt Icon im CodeArchiv, restlichen Infos sollte man
dem PSDK entnehmen können.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten