Seite 1 von 1

Problem mit ext. Konsolentool

Verfasst: 11. Januar 2011 22:17
von TK
Hallo zusammen,

ich habe ein Problem mit dem Aufruf eines ext. Konsolentool. Die GUI befindet sich auf dem Laufwerk C:\ und ruft über

Code: Alles auswählen

        process.start("C:\\Windows\\system32\\cmd.exe", QStringList(cmd));
        process.waitForFinished(); // wait and block
das ext. Konsolentool auf. Das funktioniert einwandfrei.

Rufe ich nun die GUI von einem anderen Laufwerk auf (z.B. USB-Laufwerk oder Netzlaufwerk) funktioniert das ext. Konsolentool nicht.

Ich habe anstatt process.start, process.startDetached und an die Stelle process.waitForFinished() einen breakpoint gesetzt. So sah ich, dass in der Eingabeaufforderung stand, dass der Befehl nicht ausgeführt werden konnte, obwohl QStringList(cmd) nicht verändert wurde. Es liegt wohl daran, dass ich die GUI nicht von dem Laufwerk C:\ aufrufe. Wie kann ich dieses Problem beheben?

Schlagworte die mir einfallen sind: windowsDir, windowsDriver, QCoreApplication. Oder bin ich auf dem Holzweg. Danke für eure Hilfe.

Verfasst: 12. Januar 2011 12:02
von dontinelli
Was steht denn in cmd? Arbeitest du da mit absoluten Pfaden? Keine Ahnung wie cmd.exe arbeitet, aber könnte ja sein, dass sie ihr Arbeitsverzeichnis immer dort hat, von wo sie aufgerufen wird.

Verfasst: 12. Januar 2011 13:02
von TK
Ja, ich arbeite mit absoluten Pfaden in dem CMD. Deine Vermutung mit dem Arbeitsverzeichnis könnte stimmen. Hm, wie kann ich denn das Arbeitsverzeichnis des Konsolentools setzten? Und, warum ändert sich das Arbeitsverzeichnis, wenn ich die GUI nicht von C:\ aufrufe?

Verfasst: 13. Januar 2011 08:58
von TK
Hat leider niemand eine Idee? Oder werden noch mehr Details benötigt? Wenn ja, welche?

Verfasst: 13. Januar 2011 10:16
von Baz
Ist jetzt nur so eine Idee: Man kann bei QProcess das workingDir setzen (http://doc.trolltech.com/4.7/qprocess.h ... rtDetached), vielleicht hilft dir das weiter?

Verfasst: 13. Januar 2011 12:25
von upsala
Man könnte auch ein Shell-Scirpt schreiben und die ganzen Parameter in eine Datei loggen.