Hallo zusammen!
Kurze Frage - eventuell hat es ja schon mal jemand hinbekommen.
Ich möchte, wenn möglich, per QProcess eine Batch-Datei starten, die unter Umständen auf Eingaben wartet und natürlich auch entsprechende Ausgaben macht. Diese Ausgaben möchte ich auf ein ReadOnly-QTextEdit umleiten, die Eingaben sollen z.B. per QKeyEvent an die Batch weitergeleitet werden. Das Fenster von cmd.exe soll natürlich nicht zu sehen sein (wie es z.B. bei QProcess::startDetached(...) der Fall wäre).
Hat da jemand eine Idee oder gar eine Lösung zu? Wäre super.
Besten Dank schon mal vorab,
Mordy
QProcess und Batch-Files unter Windows
Re: QProcess und Batch-Files unter Windows
Nicht QProcess::startDetached() verwenden. Lies dir doch mal die Detailed Description zu QProcess durch, da gibts einiges an Inspiration.
Und wg. Schreiben in den Process: QProcess ist von QIODevice abgeleitet, da gibts Methoden fürs Schreiben.
Und wg. Schreiben in den Process: QProcess ist von QIODevice abgeleitet, da gibts Methoden fürs Schreiben.
Re: QProcess und Batch-Files unter Windows
Ja, startDetached() verwende ich ja auch gar nicht - war nur als Beispiel wegen der DOS-Box, die ich ja nicht will. Und die write()-Funktionen von QProzess hatte ich schon probiert. Da hatte ich per keyPressEvent() in meinem MainWindow die Eingabe abgefangen und entsprechend an QProcess weitergegeben. Aber irgendwie scheint meine App blockiert zu sein, wenn ich den QProcess normal per start() ausführe.
Re: QProcess und Batch-Files unter Windows
und auch fuers lesen ....
ne batch mit Tastendruecken fernsteuern wird recht schwierig .... weiss ned ob du auf die console draufkommst und da tasten emulieren kannst.
Iss aber normal auch total unnoetig. Normal schreibt man ne Batch so, das sie die daten sich vom eingabestrom holt, im normalfall ist das stdin.
Da QProcess sich stdin schnappt, kommt auch alles an stdin deiner batch an, wass du an QProcess mittels der QIODeviceAbleitung, also write schreibst ...
noch nen QTextstream drueberhaengen, damit auch intuitiv schreiben kannst ...
QProcess myProcess;
QTextStream myInput(&myProcess);
myProcess.start("MyBatch.cmd");
myInput << 'C';
....
das C sollte bei MyBatch auf stdin ankommen ...
Ciao ...
ne batch mit Tastendruecken fernsteuern wird recht schwierig .... weiss ned ob du auf die console draufkommst und da tasten emulieren kannst.
Iss aber normal auch total unnoetig. Normal schreibt man ne Batch so, das sie die daten sich vom eingabestrom holt, im normalfall ist das stdin.
Da QProcess sich stdin schnappt, kommt auch alles an stdin deiner batch an, wass du an QProcess mittels der QIODeviceAbleitung, also write schreibst ...
noch nen QTextstream drueberhaengen, damit auch intuitiv schreiben kannst ...
QProcess myProcess;
QTextStream myInput(&myProcess);
myProcess.start("MyBatch.cmd");
myInput << 'C';
....
das C sollte bei MyBatch auf stdin ankommen ...
Ciao ...
Re: QProcess und Batch-Files unter Windows
Ich denke, ich hab´s jetzt doch soweit hinbekommen. Ich teste das noch ein wenig mit verschiedenen Batch-Scripts und bei Interesse kann ich das ja hier mal posten.
Re: QProcess und Batch-Files unter Windows
Scheint doch ein wenig komplizierter zu werden - bei C-Programmen, die printf() und scanf() zur Ein- bzw. Ausgabe benutzen, bekomme ich die Ausgaben nicht zeitnah. Bei c++ per sdtin / stdout ist das kein Thema. Ich werkel´ noch ein wenig dran rum. 