hanshandlampe Geschrieben 5. März 2006 Geschrieben 5. März 2006 Hallo, wie kann ich in (Boland) C++ die Ausgabe einer eigenständigen, externen Konsolen-Anwendung abfangen bzw. in eine Variable umleiten? So daß, ich die Ausgabe in einer anderen Anwendung, von der aus die Konsole auch aufgerufen wird, auswerten kann? Eine Möglichkeit wäre, daß ich die Ausgabe mit "console>>ausgabe.txt" in eine Textdatei umleite. Aber wie kann ich hier Argumente an die Anwendung übergeben? Geht es vielleicht auch eleganter? Gruß, Michael
Guybrush Threepwood Geschrieben 6. März 2006 Geschrieben 6. März 2006 Hmm du könntest dir mal SetStdHandle oder ReadConsole angucken...
hanshandlampe Geschrieben 6. März 2006 Autor Geschrieben 6. März 2006 Hört sich gut an! Ich schau mal.. Danke für den Tip! Michael
hanshandlampe Geschrieben 7. März 2006 Autor Geschrieben 7. März 2006 //--------------------------------------------------------------------------- AnsiString ExecuteExternalFile(AnsiString FEXEC) { AnsiString OUTP; char BUFFER[100],InAnsi[100]; unsigned long LPDWORD; SECURITY_ATTRIBUTES secattr; ZeroMemory(&secattr,sizeof(secattr)); secattr.nLength = sizeof(secattr); secattr.bInheritHandle = TRUE; HANDLE rPipe, wPipe; // Pipe für lesen und schreiben CreatePipe(&rPipe,&wPipe,&secattr,0); // Für CreateProcess STARTUPINFO sInfo; ZeroMemory(&sInfo,sizeof(sInfo)); PROCESS_INFORMATION pInfo; ZeroMemory(&pInfo,sizeof(pInfo)); sInfo.cb=sizeof(sInfo); sInfo.dwFlags=STARTF_USESTDHANDLES; sInfo.hStdInput=NULL; sInfo.hStdOutput=wPipe; sInfo.hStdError=wPipe; // Ausführen CreateProcess(0, FEXEC.c_str(), 0, 0, TRUE,NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW, 0, 0, &sInfo,&pInfo); CloseHandle(wPipe); // Rückgabe auslesen while(ReadFile(rPipe,BUFFER,100,&LPDWORD,0)) { BUFFER[LPDWORD]=NULL; OemToChar(BUFFER,InAnsi); OUTP+=InAnsi; } return OUTP.TrimRight(); // Löscht nachfolgende Leer- und Steuerzeichen } //--------------------------------------------------------------------------- <-- so siehts aus!! :marine
Narf! Geschrieben 4. Juli 2006 Geschrieben 4. Juli 2006 Habe es nachgebaut, aber die Console hat keine Ausgaben mehr. Ich möchte eigentlich die Ausgaben nur mitlesen, um auf evtl. Meldungen zu reagieren. Ansonsten soll die Ausgabe aber noch zu sehen sein. Wie kann ich das anstellen?
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden