Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Aus Consolenfenster lesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.08.2006, 16:39 Uhr
LowFly



hy, ich hab mir eine MFC anwendung geschrieben die ein Consolenprogramm startet und das was das Consolenfenster mittels sprintf o. cout << ausgibt in einem string zu speichern.

mit Readfile klappt das wunderbar. Da gibt es mir den gesammten Text aus dem Consolefenster zurück.


C++:
    char *cExecute = new char[strlen(lpExeName)+strlen(lpArguments)+2];
    sprintf(cExecute,"%s %s",lpExeName,lpArguments);
  
    //Sicherheitsattribute des Erstellten Process
    SECURITY_ATTRIBUTES secattr;
    ZeroMemory(&secattr,sizeof(secattr));
    secattr.nLength = sizeof(secattr);
    secattr.bInheritHandle = TRUE;

    HANDLE rPipe, wPipe;

    //Erstell die Pipes zum lesen & schreiben
    CreatePipe(&rPipe,&wPipe,&secattr,0);

    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;

    //Öffne die Console verdeckt
    CreateProcess(0,cExecute,0,0,TRUE,
          NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,0,0,&sInfo,&pInfo);

    CloseHandle(wPipe);

    char *buf = new char[MAX_PATH];
    DWORD reDword;
    BOOL res;
    char *cOutput="";
    COORD dwReadCoord={0,0};

    do
    {

        [b]res=::ReadFile(rPipe,buf,MAX_PATH,&reDword,0);[/b]


        if(res)
        {
            char *cTemp = new char[strlen(cOutput)+1];
            strcpy(cTemp,cOutput);

            cOutput = new char[strlen(cTemp)+strlen(buf)+1];
            sprintf(cOutput,"%s%s",cTemp,buf);

            delete[]cTemp;
        }

    }while(res);

    strcpy(lpReturnText,cOutput);

return TRUE;

  delete[]cOutput;
  delete[]cExecute;
  delete[]buf;



jetzt ist der Text aber in spalten gegliedert
zuerst kommt die Zeilennr dann ein space & danach der Text in der Zeile. Wenn ich jetzt die MSDN richtig versteh dann sollte das doch mit ReadConsoleOutput bzw. mit
ReadConsoleOutputCharacter

funzen das ich text von bis auslese. leider tut es das nicht. alle versuche schlagen fehl wenn ich versuche aus der MFC anwendung heraus auszulesen. es wird mir gar kein text zurückgegeben.

PS:
das beispiel hier hab ich schon durch und in einer console funzt das ganz gut nur nicht wenn ich von auserhalb darauf zugreifen will.

kann mir da mal jemand helfen.
mfg
LowFly
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: