standartausgabe umleiten?
-
Hallo,
ich habe ein Konsolenprogramm (das ich nicht ändern kann) und schreibe ne Gafischeoberfläche dazu. Nun muss ich die standartausgabe von CMD umleiten.
Aber wie??Dazu habe ich auch schon in Forum gesucht und einiges gefunden aber nicht ferstanden!

Der meist gebrachte forschlag ist die ausgabe in eine datei umzu leite und wieder auszulesen. Das ist aber beimir nicht pragtisch. Funktionirt das nicht auch anders??
Danke für die Hilfe!!
MFG TaccoGo
-
-
Hallo,
ich habe da was gefunden aber ich schribe mit system() ein Befel und bekome damit nur den Befel selbst wieder und nicht die anutwort.char com[255]; com="dir";//z.B. system(com); CHAR chBuf[4096]; DWORD dwRead, dwWritten; HANDLE hStdin, hStdout; BOOL fSuccess; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); hStdin = GetStdHandle(STD_INPUT_HANDLE); if ((hStdout == INVALID_HANDLE_VALUE) || (hStdin == INVALID_HANDLE_VALUE)) ExitProcess(1); for (;;) { // Read from standard input. fSuccess = ReadFile(hStdin, chBuf, 4096, &dwRead, NULL); m_ausg.Format("%s\n%s",m_ausg,chBuf);//hier stet wider "dir" UpdateData(FALSE); if (! fSuccess || dwRead == 0) break; }wie soll ich das dan machen?

MFG TaccoGo
-
Hallo,
du solltest:
1. nicht system benutzen
2. den Code so schreiben, wie der Link, den flenders angegeben hat, es beschreibt.MfG
-
naja ich habe mit der erklerung auf der seite paar probleme.
kann mir da jemand helfen?MFG TaccoGo
-
Was genau ist dir denn unklar?
-
ich soll einen Chil-Prozess erstelen der das konsolen programm mit den parametern aufruft.
Ich finde plos nicht wie ich die antwort des programms herbekomme.
MFG TaccoGo
-
vielleicht hilft dir das Stichwort "Pipes"
-
ja das habe ich auch schon probirt.
in moment siet es so aus.HANDLE hInput,hOutput; STARTUPINFO startUp; PROCESS_INFORMATION process; memset(&startUp,0,sizeof(STARTUPINFO)); memset(&process,0,sizeof(PROCESS_INFORMATION)); CreatePipe(&hInput,&hOutput, NULL, 0); startUp.hStdInput = GetStdHandle(STD_INPUT_HANDLE); startUp.hStdOutput = hOutput; startUp.hStdError = GetStdHandle(STD_ERROR_HANDLE); //in com ist das programm mit parametern angegeben CreateProcess(NULL,com, NULL, NULL, true, CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE, NULL,NULL,&startUp,&process); WaitForSingleObject(process.hProcess, 500); char buff[255]; memset(buff,0,255); DWORD readed; ReadFile(hInput,buff,255,&readed,NULL);