Neues Programm aus Hauptprogramm erstellen.. oder so..



  • Ich möchte es neu erstellen.

    So das ich aus einem Programm herraus immer neue Programme erstellen kann
    die strukturell gleich sind aber halt bestimmte Parameter die ich
    vorher im Hauptprogramm definiert habe beachten.

    Bitte sagt mir jetzt nicht das ich dann einen ganzen C/C++ Compiler
    in mein Programm einbauen muss?!^^



  • Weißt du denn, wie viele Programme du erstellst? Denn dann könnte man sie so kompilieren und dann solltest du dir meine Beiträge in dem Link ansehen.



  • Einfacher wäre es wenn du einfach mal sagst was du willst. Und nicht nur Wischiwaschi so halb mal was anreißt vom Thema.



  • Fellhuhn schrieb:

    Einfacher wäre es wenn du einfach mal sagst was du willst. Und nicht nur Wischiwaschi so halb mal was anreißt vom Thema.

    Na denn^^

    Angenommen das Programm soll so aussehen:

    1. Eine .exe Datei, diese führt man dann aus.

    Dann kommt ein WinAPI Fenster mir einem Menü,
    hier wählt man dann sowas wie "Datei->Neu"

    Jetzt öffnet sich ein Formular indem man Prozessnamen
    angeben muss. (Also Strings halt)

    Dann klickt man, immer noch in diesem Formular, auf "Programm Erstellen".

    Und schon generiert das Hauptprogramm eine neue .exe
    die beim ausführen alle vorher eingegebenden Prozesse beendet.



  • Ahhh...

    Du willst also in einem deiner Programme eine Liste eingeben aus der ein Programm gespeichert wird das wiederrum ausführbar ist und die vorher eingegebenen Programme beendet.

    Wäre es nicht einfacher einfach eine batch-Datei zu erstellen die stumpf kill auf die aufruft?

    Wobei ich gerade nicht weiß ob es sowas für Windows gibt.

    EDIT: Das Beenden von Prozessen hat eh nichts mit dem Standard C++ zu tun, daher bist du hier im Forum eh falsch.



  • Ja, so was gibts für Windows, nennt sich "Taskkill".

    Die Funktion ist aber nicht in alle Versionen integriert,
    ich weiß zwar nicht warum aber ich kenne viele Leute
    die diese Funktion so nicht auf ihrem Rechner haben.

    Man könnte das Programm Taskkill zwar runter laden,
    aber das ist umständlich 🙂

    Außerdem geht es mir hier auch grundsätzlich mehr um die
    Technik, und nicht um Lösungen von "außen" 🙂



  • Es soll in diesem Thread ja auch nicht um die "Beendung von Prozessen" gehen,
    sondern eben nur um das oben genannte Problem 🙂



  • Mit Standard-C++ kannst du keine anderen Executables erstellen.
    Mit Standard-C++ kannst du keine anderen Prozesse killen.

    Das ist alles Win-API oder Compiler-API etc. pp.

    [wobei es ziemlich unsinnig wäre für so etwas on the fly ein Programm zu kompilieren statt mit Übergabeparametern oder Configfiles zu arbeiten]



  • Es gibt ein Programm namens ClickExe (glaube ich), das kann auch Executables erstellen. Schau doch einfach mal ob du da irgendwo Informationen auf der Webseite findest.


  • Mod

    sascha451 schrieb:

    Es soll in diesem Thread ja auch nicht um die "Beendung von Prozessen" gehen,
    sondern eben nur um das oben genannte Problem 🙂

    Deine Herangehensweise ist aber umständlich, deswegen zögern wir, dir das zu sagen :p .

    Es ist natürlich möglich, neue Executables zu erstellen die vorher eingegebene Strings drin haben. Das ist aber eine ziemliche Frickelei. Viel einfacher wäre es, wenn du das über Dateien, Kommandozeilen oder Interprozesskommunikation löst. Für deinen Anwendungsfall ist wohl eine Konfigurationsdatei die passende Vorgehensweise.



  • Fellhuhn schrieb:

    Mit Standard-C++ kannst du keine anderen Executables erstellen.
    Mit Standard-C++ kannst du keine anderen Prozesse killen.

    Das ist alles Win-API oder Compiler-API etc. pp.

    [wobei es ziemlich unsinnig wäre für so etwas on the fly ein Programm zu kompilieren statt mit Übergabeparametern oder Configfiles zu arbeiten]

    Noch mal, und das geht auch an Kóyaánasqatsi, es ging mir um die Technik
    und nicht um eine Lösung von außen.

    So ok dann weiß ich jetzt dass das mit Standart C++ NICHT geht.

    Dann gucke ich mal ob ich meine Frage noch unter "WINAPI" oder so stelle,
    falls ihr aber zufällig ein par Stichworte habt nach denen ich
    suchen könnte, immer her damit 🙂


  • Mod

    Mit Standard-C++ kannst du keine anderen Executables erstellen.

    Natürlich geht das. In welcher Sprache ist wohl ein Compiler geschrieben? Alles was man braucht, ist eine Dateiausgabe, die C++ aber kennt.

    Ist aber natürlich kein Anfängerthema, sondern eher ziemlich komplex.

    Was noch einigermaßen für einen Anfänger bis Fortgeschrittenen Programmierer machbar ist, ist die Manipulation von Stringliteralen in anderen Executables. Daher wäre sascha451 Vorhaben wohl auch machbar, aber es wäre die mit Abstand schlechteste Lösung für sein Problem.

    edit: hier eine Demo, wie man sowas machen kann, die ich vor langer Zeit mal als abschreckendes Beispiel geschrieben habe:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-248191-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-executable-and-start-is-10.html



  • SeppJ schrieb:

    Mit Standard-C++ kannst du keine anderen Executables erstellen.

    Natürlich geht das. In welcher Sprache ist wohl ein Compiler geschrieben? Alles was man braucht, ist eine Dateiausgabe, die C++ aber kennt.

    Ist aber natürlich kein Anfängerthema, sondern eher ziemlich komplex.

    Was noch einigermaßen für einen Anfänger bis Fortgeschrittenen Programmierer machbar ist, ist die Manipulation von Stringliteralen in anderen Executables. Daher wäre sascha451 Vorhaben wohl auch machbar, aber es wäre die mit Abstand schlechteste Lösung für sein Problem.

    edit: hier eine Demo, wie man sowas machen kann, die ich vor langer Zeit mal als abschreckendes Beispiel geschrieben habe:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-248191-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-executable-and-start-is-10.html

    Das ist doch schon mal ganz nett.. etwas umständlich aber hoffe mal es funktioniert.

    Jetzt habe ich am Anfang natürlich nur eine .exe und nicht zwei, somit müsste ich den "Neue Exe Prototyp" vorcompilen und in das Hauptprogramm einfügen.

    Gibts dafür auch noch eine bessere Lösung (wobei jede Lösung hier wahrscheinlich
    besser ist als das was ich vor habe, nähmlich den Binär-Code des Prototyps in einem riesigen Array zu speichern und dann auszugeben oO falls das überhaupt funktioniert..)

    Also könnte man den Prototyp zB. als Resource integrieren oder so was?


  • Mod

    Das geht alles, hier wird zum Beispiel demonstriert wie man eine Bitmap in den Code einfügt, das geht natürlich auch mit einer vorcompilierten Exe:
    http://thedailywtf.com/Articles/The-cbitmap.aspx

    Beachte: Das ist eine Seite wo kein guter Code vorgestellt wird. Die Leute machen sich dort darüber lustig, wie jemand überhaupt auf so eine hirnverbrannte Idee kommen kann. Willst du demnächst zu den Leuten gehören über die man sich auf dieser Seite lustig macht? Du bist gerade auf dem besten Weg dahin. Dein Ansatz ist die schlechtestmögliche Lösung für dein Problem!



  • Ähm, Sepp, das ist ein gaaaaanz schlechtes Beispiel von der Seite. Denn das was da kritisiert wird ist komplett normale standardisierte Praxis. Lies dir die Kommentare da durch, dann muss ich das nicht kommentieren. 😉


  • Mod

    Fellhuhn schrieb:

    Ähm, Sepp, das ist ein gaaaaanz schlechtes Beispiel von der Seite. Denn das was da kritisiert wird ist komplett normale standardisierte Praxis. Lies dir die Kommentare da durch, dann muss ich das nicht kommentieren. 😉

    Ich weiß, dass das da angemessen war. Willst du aber behaupten, dass das in diesem Fall angemessen ist?


Anmelden zum Antworten