.exe Builder



  • Ist das "Sub-Programm" von dir Programmiert also das du es umstellen könntest das es sich die Texte aus der Resource entnimmt? oder ist es eine Fremd EXE die du manipulieren willst?



  • Nein, die .exe ist von mir selbst erstellt.



  • Wozu soll das denn überhaupt gut sein?
    Upgrade, andere Sprache oder was?

    Was Du bisher beschreibst kommt mir vor, als wolltest Du einen eigenen
    Compiler/Linker schreiben...

    wNw



  • Später soll jemand mit dem "Builder" einen Pfad zu einem Bild auswählen und einen Text eingeben, dann wird eine .exe erstellt die das Bild und den Text darstellt, die man dann verschicken kann, eine Art Scherzprogramm also. Aber ich will es eben erst mal mit einem einfach Beispiel, wie einer MessageBox versuchen. Der Rest ist ja dann einfach.



  • Und was hintert dich jetzt daran dein "Subprogramm" so umzustellen das es seine Anzeige Texte bzw. die Texte/Bilder die du verändern willst sich aus der Resource läd, die du dann später Einfach und Sicher (nachdem du die Exe gespeichert hast) mit BeginUpdateResource/UpdateResource/EndUpdateResource verändern kannst?

    Brauchst fertigen Copy&Paste Code?



  • Das war ja was ich versucht habe, nur eben nicht mit UpdateResource. Vielleicht sollte ich mal die Resource posten, vielleicht wird es dann etwas klarer.

    /*********************************************
    File: D:\DOKUMENTE UND EINSTELLUNGEN\TORMENR\DESKTOP\MBOX.RC
    Generated by Resource Builder (2.6.2.0).
    *********************************************/
    /*
    OutputExt=res
    */
    mbox RCDATA
    MOVEABLE PURE LOADONCALL DISCARDABLE
    LANGUAGE LANG_NEUTRAL, 0
    BEGIN
    '4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 '
    'B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 B0 00 00 00 '
    '0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 '
    '69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F '
    '74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 '
    '6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 '
    '5D 5C 6D C1 19 3D 03 92 19 3D 03 92 19 3D 03 92 '
    '97 22 10 92 1E 3D 03 92 E5 1D 11 92 18 3D 03 92 '
    '52 69 63 68 19 3D 03 92 00 00 00 00 00 00 00 00 '
    '50 45 00 00 4C 01 03 00 C9 B1 B5 46 00 00 00 00 '
    '00 00 00 00 E0 00 0F 01 0B 01 05 0C 00 02 00 00 '
    '00 04 00 00 00 00 00 00 00 10 00 00 00 10 00 00 '
    '00 20 00 00 00 00 40 00 00 10 00 00 00 02 00 00 '
    '04 00 00 00 04 00 00 00 04 00 00 00 00 00 00 00 '
    '00 40 00 00 00 04 00 00 CD E3 00 00 02 00 00 00 '
    '00 00 10 00 00 10 00 00 00 00 10 00 00 10 00 00 '
    '00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 '
    '10 20 00 00 3C 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 20 00 00 10 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 2E 74 65 78 74 00 00 00 '
    '26 00 00 00 00 10 00 00 00 02 00 00 00 04 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 60 '
    '2E 72 64 61 74 61 00 00 92 00 00 00 00 20 00 00 '
    '00 02 00 00 00 06 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 40 00 00 40 2E 64 61 74 61 00 00 00 '
    '14 00 00 00 00 30 00 00 00 02 00 00 00 08 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '6A 40 68 00 30 40 00 68 09 30 40 00 6A 00 E8 0D '
    '00 00 00 6A 00 E8 00 00 00 00 FF 25 00 20 40 00 '
    'FF 25 08 20 40 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '5C 20 00 00 00 00 00 00 78 20 00 00 00 00 00 00 '
    '4C 20 00 00 00 00 00 00 00 00 00 00 6A 20 00 00 '
    '00 20 00 00 54 20 00 00 00 00 00 00 00 00 00 00 '
    '86 20 00 00 08 20 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 5C 20 00 00 '
    '00 00 00 00 78 20 00 00 00 00 00 00 80 00 45 78 '
    '69 74 50 72 6F 63 65 73 73 00 6B 65 72 6E 65 6C '
    '33 32 2E 64 6C 6C 00 00 9D 01 4D 65 73 73 61 67 '
    '65 42 6F 78 41 00 75 73 65 72 33 32 2E 64 6C 6C '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '54 6F 6C 6C 65 42 6F 78 00 54 6F 6C 6C 65 72 54 '
    '65 78 74 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '
    END
    

    So, an der Position, an der der Text steht, versuche ich nun den String zu ersetzen. Wenn ich mir UpdateResource in der MSDN anschaue, frage ich mich, wie ich dort festlegen soll, wo der String durch was ersetzt werden soll. Da es eben nicht irgendeine String Table ist. Wenn ich da irgendwo einen dicken Denkfehler drin habe, sagt bitte Bescheid. Oder ist der Resource Typ falsch?

    Sorry wenn ich leicht undankbar erscheine, aber ich bin die letzten Tage leicht genervt. Also möcht ich mich, auch wenn's noch nicht funzt, bei euch allen für die Mühen bedanken. 🙂



  • VergissEs schrieb:

    Und was hintert dich jetzt daran dein "Subprogramm" so umzustellen das es seine Anzeige Texte bzw. die Texte/Bilder die du verändern willst sich aus der Resource läd, die du dann später Einfach und Sicher (nachdem du die Exe gespeichert hast) mit BeginUpdateResource/UpdateResource/EndUpdateResource verändern kannst?



  • Okay, ich glaub ich hab verstanden, was ihr mir seit 2 Tagen versucht zu sagen:

    Das erstellte Subprogramm soll die Strings aus einer Resource lesen die vom Builder verwaltet (geupdatet) wird?

    Edit: Da würde sich aber ein Problem auftun-> Das Subprogramm müsste ja erst gestartet werden, damit es die Resource auslesen kann. Das ist ja irgendwie sehr unelegant.



  • Ist das jetzt ein Troll Versuch?



  • Was zur Hölle ist ein "Troll Versuch"?

    Edit: http://de.wikipedia.org/wiki/Troll_(Netzkultur) ... aha

    Nein das ist kein "Troll Versuch". Ich hätte eigentlich gerne eine Antwort.



  • Ja klar muß dein Subprogramm gestartet werden damit es auf seine eigenen Resourcen zugreifen kann!

    Dein Builder Programm wird ja auch irgendwan mal gestartet um auf seine eigenen Resourcen zu zu greifen (in deinem Fall dein Subprogramm das es dann herrausnimmt und speichert und dann verändern soll).

    Was soll daran bitteschön unelegant sein wenn es das macht was es machen soll? 😮 😮 😮



  • Der Builder soll ja gestartet werden, der soll ja die .exe erzeugen, die nach den Angaben im Builder erzeugt wird. Wäre etwas blöd, wenn dann der erzeugten .exe immer eine .res Datei beiliegen würde.



  • Unsinn; wie kommst du auf die Idee, du müsstest eine .res beilegen?

    .rc -> Textdatei, die Informationen über die verwendeten Ressourcen enthält.
    .res -> Kompilierte Resourcendatei, die direkt in das Programm mit eingelinkt wird.

    Im Übrigen ist es absolut nicht unelegant, Daten in Dateien auszulagern (daher kommt auch die Bezeichnung: Daten -> Datei) 😉 Eine einzige Datei ist nur handlicher, aber nicht eleganter. Eher im Gegenteil ...



  • Irgendetwas muss aber beigelegt werden, was mir an dieser Lösung eben nicht gefällt. Das mag ja in manchen Fällen sinnvoll und praktisch sein, in diesem Fall aber nicht.



  • Was willst du den beilegen? das ist doch schon alles in der EXE!



  • Aber die Subexe muss sich doch beim Start die Informationen aus der String Table holen. Und die muss ja dann wohl beigelegt werden.



  • Deine Builder EXE mit integrierten Subprogramm

    *---------------------------*
    |                           |
    | Builder.exe               |
    |                           |
    |                           |
    |  Resource                 |
    |  *---------------------*  |
    |  |                     |  |
    |  |  Subprogramm        |  |
    |  |                     |  |
    |  |                     |  |
    |  |  Resource           |  |
    |  |  *---------------*  |  |
    |  |  | Text          |  |  |
    |  |  | Bild usw.     |  |  |
    |  |  *---------------*  |  |
    |  *---------------------*  |
    *---------------------------*
    

    Dein Subprogramm nach dem extrahieren

    *---------------------------*
    |                           |
    | Subprogramm.exe           |
    |                           |
    |                           |
    |  Resource                 |
    |  *---------------------*  |
    |  |                     |  |
    |  |  Text               |  |
    |  |  Bild usw.          |  |
    |  |                     |  |
    |  *---------------------*  |
    *---------------------------*
    

    Nun verändert dein Builderprogramm die Resourcen des Subprogramms.
    Und dein Subprogramm holt sich die Texte/Bilder aus seiner eigenen Resource.

    Wo siehst du hierbei eine zusätzliche Datei die nicht in der EXE steckt?



  • Das verwirrt mich nur noch mehr...

    Das Subprogramm entsteht ja aus einer RT_RCDATA Resource, wie soll ich denn in eine .exe die erst aus einer anderen Resource entsteht eine Resource einbinden, die dann auch noch mal von einem Programm verändert wird. Wenigstens etwas Sourcecode würde die Sachen vielleicht klarer machen...



  • Lies dir meinen letzten Beitrag bitte noch einmal durch.

    Pass mal auf:

    Definitionen:
    Kompilat = die .exe, die du weitergeben möchtest
    Builder = die .exe, die das Kompilat so verändert, dass es wie von dir gewünscht ein Bild oder ähnliches enthält.

    Vorgehen:
    Dein Kompilat ist so programmiert, dass es aus seinen EIGENEN Ressourcen das Bild und den Text lädt und diese anzeigt.
    Dein Builder nimmt das Kompilat und aktualisiert in DESSEN Ressourcen das Bild und den Text via UpdateResource().

    Effekt:
    Nachdem der Builder das Kompilat bearbeitet hat, zeigt es das jeweils gewollte Bild und den jeweils gewollten Text an.

    @VergissEs
    In meinem Beispiel hier ist das Kompilat nicht als Resource im Builder enthalten. Das war mir schon bewusst, aber ich glaube, anders versteht er es nicht ...



  • Ich versuch mich gerade dran, allerdings arbeite ich nicht mit MFC, weshalb ich die Funktion von Codeproject nicht nutzen kann (CString scheint only MFC zu sein). Ich guck mal ob AnsiString ähnlich Funktionen wie GetBuffer und GetLength haben.

    Okay das ist ein Anfang, ich bin immerhin schon so weit gekommen:

    Bild

    Das der Titel nicht stimmt, liegt daran, das ich nur die Text Resource ID verändert habe. CString.GetLength() sowie CString.GetBuffer(0) habe ich durch AnsiString.Length sowie AnsiString.c_str() ersetzt. Der Fehler mit dem Fragezeichen lässt sich sicher beheben.

    Danke an alle die nicht aufgegeben haben und hartnäckig auf mich eingeredet haben. Ich hab das Prinzip nun verstanden. 🙂


Anmelden zum Antworten