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 Zitieren
Guybrush Threepwood Geschrieben 6. März 2006 Geschrieben 6. März 2006 Hmm du könntest dir mal SetStdHandle oder ReadConsole angucken... Zitieren
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 Zitieren
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 Zitieren
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? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.