ShellExecuteEx und Umleitung in Datei



  • moin,
    ich habe folgendes Problem. Ich möchte die Ausgabe eines Programmes, dass ich mit ShellExecuteEx starte in eine datei umleiten. Der Aufruf scheint richtig zu sein, denn wenn ich als Parameter, die Umleitung (">>") weglasse kriege ich die richtige Ausgabe (ich hatte zum testen auf SW_NORMAL gestellt), sobald ich aber an das view ein ">> c:\\recent.txt anhänge" kommt keine ausgabe mehr (was ja auch sinn der sache ist) aber es wird auch keine recent.txt erstellt. auch versuche mit einer schon existierenden recent.txt schlugen fehl. wenn ich das ganze an der kommandozeile eingebe, funktioniert es einwandfrei. ich hab den befehl auch in ein batchfile gepackt. diese batch funktionierte auch, wenn ich sie selber gestartet hab. wenn ich sie mit shellexecuteex (dann ohne parameter) startete kam wieder nichts. was mach ich falsch?

    hier der quelltext

    int i;
        SHELLEXECUTEINFO ShellInfo;
        memset(&ShellInfo, 0, sizeof(ShellInfo));
        ShellInfo.cbSize = sizeof(ShellInfo);
        ShellInfo.hwnd = Form1->Handle;
        ShellInfo.lpVerb = NULL;
        ShellInfo.lpFile = "net.exe";
            ShellInfo.lpParameters = "view >> c:\\recent.txt";
        ShellInfo.nShow = SW_HIDE;
        ShellInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
        bool res = ShellExecuteEx(&ShellInfo);
        if (res) WaitForSingleObject(ShellInfo.hProcess, INFINITE);
    


  • Hi!
    So weit ich weiß, wird der Umleiztungsbefehl (>> ) nicht mehr von Windows unterstützt. Den gibt's nur unter DOS (system(" prog.exe >> datei.txt")).

    MfG
    niemand



  • wie kann ich denn dann, die ausgabe eines programmes auswerten?



  • Hi,

    ich arbeite unter dem C++ Builder 6, und folgende Sache hat bei mir funktioniert, ich benutze aber den befehl system aus der stdlib.h
    GANZ SIMPEL ABER FUNNZT !!!

    system("net view >C:\\Recent.txt");
    

    Du kannst diesen Befehl nutzen wenn du auf die (Err)-Überwachung verzichten willst. Funzen tut dieser Befehl bei allen Betriebssystemen die ich mit VMWare zur verfügung hatte... (Win95 / Win98 / WinME / Win2000 / WinXP)

    [niemand] hatte schon recht die Form des befehls ">>" gibt es nicht mehr in der cmd.exe von WinXP und in der Command.com von WinME und Win2000. Aber den Zeiger ">" gibt es noch ! Da Batchen like "Pause >NUL" noch immer möglich ist...

    Hoffe dir weitergeholfen zu haben... :p

    mfg matthes



  • Ich glaube, das geht über Pipes. Kenn mich da aber nicht aus. 🙄



  • mit CreatePipe ReadConsole das sollte gehen also msdn...



  • http://www.cplusplus.com/ref/cstdio/freopen.html

    mit dem und system(befehl);
    geht dat.


Anmelden zum Antworten