Wie von pilif und Bob erwähnt, müssen Sie CreateProcess
verwenden.
Wenn Sie Code haben möchten, der alles für Sie bereitstellt, habe ich eine Klasse für genau dieses Problem unter:
Ссылка .
Die Klasse ( kGUICallThread
) behandelt Linux-, macOS- und Windows-Versionen. Der Code ist lizenziert LGPL.
Ich benutze, um das Problem wie Sie zu finden.
Angenommen, Sie möchten die Ausgabe von STDOUT, die mit dem Befehl dir generiert wurde, erfassen und die aufgenommene Datei in out.txt speichern.
Verwenden Sie den Texteditor und geben Sie dir & gt; out.txt und speichern Sie sie mit mybat.bat (* .bat, nicht * .txt)
Geben Sie in Ihrem c / c ++ Programm WinExec ("mybat.bat", SW_HIDE); ein und führen Sie Ihre Anwendung aus.
Öffnen Sie die out.txt , um den Namen der Ordner und Dateien im aktuellen Verzeichnis anzuzeigen.
Sie können auch ausführbare Dateien (* .exe) auf die gleiche Weise wie folgt ausführen.
xxx.exe & gt; out.txt
Ich hoffe, es kann dir helfen. Entschuldigung, mein Englisch ist wirklich nicht gut.
Das ist nicht möglich. ShellExecute
( Ex
) führt die Anwendung grundsätzlich im Kontext der Shell aus - Sie tun also im Prinzip, was der Explorer tut.
Das Aufzeichnen von STDIN und STDOUT ist etwas, was die Shell im Allgemeinen nicht tut. Sie müssen die CreateProcess
route aufrufen (was immerhin ShellExecute
schließlich aufruft, wenn die auszuführende Datei ein Programm ist und Das Verb ist 'offen'.)