system() ausgabe unlenken



  • Hallo, wollte so Art eigene dos box schreiben, habe nur das problem das ich entweder die ausgabe bei ausführen eines befehls mit system() die ausgabe auf ein memo umleiten müsste oder gibt es eine möglichkeit die betriebsystem befehle auch mit einer anderen funktion auszuführen. bitte um kleines beispiel!



  • meinst du sowas?

    (aus der msdn)

    #include <stdio.h>
    #include <stdlib.h>
    
    int main( )
    {
    
       char   psBuffer[128];
       FILE   *pPipe;
    
            /* Run DIR so that it writes its output to a pipe. Open this
             * pipe with read text attribute so that we can read it 
             * like a text file. 
             */
    
       if( (pPipe = _popen( "ping localhost", "rt" )) == NULL )
          exit( 1 );
    
            /* Read pipe until end of file. */
    
       while( !feof( pPipe ) )
       {
          if( fgets( psBuffer, 128, pPipe ) != NULL )
             printf( psBuffer );
       }
    
            /* Close pipe and print return value of pPipe. */
    
       printf( "\nProcess returned %d\n", _pclose( pPipe ) );
    }
    

    oder in datei umleiten über system ("deinprogramm>test.log"); und dann auslesen...



  • Hallo,

    danke für dich fixe Antwort.

    Mein Problem ist ich benutze eine

    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){....}
    

    und dort blink beim ausführen von system() immer kurz die "command promt" auf. An sonsten kommt das glaub ich sehr nahe!



  • drei anmerkungen:

    wieso führst du jetzt noch system aus?

    was soll deine "dos box" eingentlich können? kann man das nicht selber implementieren?

    system unter winapi.. benutze shellexcecute



  • hätte gerne alle standard betriebsystem befehle mit orginal parameter wie z.B. dir xcopy ect. + orginal bildschirmausgabe bei ausführung



  • nimm shellexcecute...

    oder programmiere sie selber. 🙂 (wär ne nette aufgabe)



  • elise schrieb:

    nimm shellexcecute...

    oder programmiere sie selber. 🙂 (wär ne nette aufgabe)

    wie kann ich denn "dir" mit shellexecute ausführen und die ausgabe in z.B. MEMO bringen? 😕



  • wieso geht sowas

    if( (pPipe = _popen( "dir /w", "rt" )) == NULL )

    bei dir nicht?

    hmm dann pack es in eine datei und lese danach davon aus

    ShellExecute(NULL, "open", "command.com", " /k dir >test.txt", NULL, SW_HIDE);

    achtung: unter xp nicht command.com, sondern entsrechendes..

    und lass dich nachher nach winapi verschieben, die wissen ev. noch einiges mehr.



  • danke weder ich so mal probieren!!! hört sich recht gut an. das mit unterschied win9x kernel und winnt kernel sprcih auch command.com / cmd.exe ist klar!!!!!


Anmelden zum Antworten