Veröffentlicht 5. März 200619 j 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
7. März 200619 j //--------------------------------------------------------------------------- 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
4. Juli 200619 j 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?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.