@ts-soft
Ich kriegs nicht auf die Reihe
Das Beispiel in Deinem Link greift auf eine filename.exe zu.
Ich bastele mir in PureBasic zum Testen also einen Dreizeiler wie z.B:
Code: Alles auswählen
If OpenWindow(0,300,200,400,300,#PB_Window_SystemMenu,"Icontest")
Delay(3000)
EndIf
Diese filename.pb compiliere ich zur filename.exe, also ein leeres Fenster, das für 3 Sekunden angezeigt wird und dem ich mit einem anderen Programm ein Icon zuweisen möchte.
Jetzt hätte das Programm noch gerne eine Datei filename.exe.manifest.
Ein Manifest ist, soweit ich weiß, eine XML-Datei, die der filename.exe sagt, dass sie auf die Version 6 der comctl32.dll zugreifen soll und die ist für Steuerelemente (Gadgets) auf der Oberfläche zuständig (auch für das SystemIcon???).
Ich hoffe, ich habe das richtig interpretiert.
Weil bei deinem Programm kein Manifest dabei ist, habe ich testweise die xp.res aus den PureBasic\Compilers Verzeichnis in filename.exe.manifest umbenannt.
Dein Programm verwendet Speicherbefehle, um den Aufruf der API-Befehle vorzubereiten.
Mit #RT_MANIFEST = 24 kann ich gar nichts anfangen. Wofür ist das gut?
Wenn ich dein Programm jetzt starte, wird es zwar ausgeführt, aber die filename.exe, die vorher noch funktioniert hat, erzeugt jetzt eine Fehlermeldung "Dies ist keine gültige Windows-Anwendung".
Ich muss ehrlich sagen, mir fehlen die Grundkenntnisse, um die Funktionsweise nachzuvollziehen.
Warum läuft das Programm nicht, wie binde ich das Icon ein und brauche ich die Manifest-Datei überhaupt dafür?
Ich hätte nie gedacht, dass es so ein Problem ist, ein Icon in ein fertiges EXE-Programm einzubinden.
Gibt es denn nirgends ein funktionierendes PureBasic-Beispiel, das dies ermöglicht und das ich einigermaßen verstehen kann?
Trotzdem, danke für den Link.