QProcess und Batch-Files unter Windows

Alles rund um die Programmierung mit Qt
Antworten
Mordy
Beiträge: 13
Registriert: 29. Juli 2011 08:39

QProcess und Batch-Files unter Windows

Beitrag von Mordy »

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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QProcess und Batch-Files unter Windows

Beitrag von franzf »

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.
Mordy
Beiträge: 13
Registriert: 29. Juli 2011 08:39

Re: QProcess und Batch-Files unter Windows

Beitrag von Mordy »

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.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: QProcess und Batch-Files unter Windows

Beitrag von RHBaum »

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 ...
Mordy
Beiträge: 13
Registriert: 29. Juli 2011 08:39

Re: QProcess und Batch-Files unter Windows

Beitrag von Mordy »

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.
Mordy
Beiträge: 13
Registriert: 29. Juli 2011 08:39

Re: QProcess und Batch-Files unter Windows

Beitrag von Mordy »

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. ;)
Antworten