Ein Konsolenprogramm in C++ aufrufen und gleich einen String in die neue Konsole schreiben



  • Hallo Leute,

    ich habe folgendes Problem: Ich würde gerne aus einem C++ Programm ein externes Konsolenprogramm öffnen. Wie das öffnen funktioniert ist kein Problem. Jetzt aber meine Frage: Ist es möglich dem neuen Konsolenprogramm gleich etwas zu übergeben?
    Beispielsweies das neue Programm startet mit: Geben sie ihren Namen ein: - mein C++ Programm schreibt jetzt schon vordefiniert den Namen tester84 in die neue Konsole und bestätigt, so dass das Programm weiter läuft.
    Das externe Programm, welches ich öffnen möchte kann ich nicht bearbeiten, da es nicht von mir ist.

    Danke und Gruß
    tester84



  • Dem Programm das du startest etwas übergeben ist kein Problem:

    // Bei dir im Programm:
    system("externes.exe param1 param2"); // Statt system() gibts natürlich genügend Alternativen, aber zum Starten einer externen Anwendung reichts allemal
    
    // Im externen Programm:
    int main (int argc, char** argv)
    {
        cout << "Param 1 war: " << argv[1] << endl;
        return 0;
    }
    

    Wenn das externe Programm allerdings nicht direkt drauf wartet, dass etwas von dir kommt wirds um einiges schwierieger.

    Du benötigst in deinem Programm das STD_OUTPUT_HANDLE der anderen Konsole, dann kannst du mit der Konsolen-API-Funktion WriteConsole() bzw. WriteConsoleOutput() rausschreiben.

    Aber frag mich nicht, ob das andere Fenster, dass dann einfach reingemalt kriegt oder als Input wertet. Ich weiß noch nicht einmal ob du das STD_OUTPUT_HANDLE des anderen Konsolenfensters irgendwo günstig bekommst. Habe damit noch nicht gearbeitet.

    MfG SideWinder



  • Andere Möglichkeit ist so zu tun als würde der User etwas auf der Tastatur eingeben, und das an das andere Programm senden. Ist aber auch WinAPI. Schau dir da mal SendInput() an.

    MfG SideWinder



  • Servus,

    also schon mal danke. Das "externe Programm" wartet nicht darauf das etwas kommt... von daher wäre eine Art "vorgaukeln" das jemand etwas auf der Tastatur eingibt am besten (wie gesagt am "externen" Programmcode kann ich leider nichts ändern).

    Da ich heute abend keine Zeit mehr habe, schaue ich mir das ganze morgen noch mal genauer an. Sollte ich dann noch Fragen haben oder auf dem weiteren Weg wieder Unklarheiten aufkommen melde mich wieder.

    Danke!
    tester84



  • Hallo tester84,

    wenn du nur einmal etwas in dein externes Programm eingeben müsstest, dann reicht sowas:

    system("echo tester84 | extprog.exe");
    

    Wenn du allerdings mehr zu übertragen hättest, dann solltest du mal die WinAPI durchstöbern und nach einer Funktion suchen, die ein externes Programm startet und dir einen stream oder handle zurückliefert, durch den du dann mit dem Programm mehr oder minder kommunizieren kannst, ähnlich wie mit einer Datei, die du mit fopen() öffnest.



  • Hey Super!

    Einmal senden hat mir gelangt.
    Also vielen Dank!!!!
    Klasse!

    tester84


Anmelden zum Antworten