Starten Sie einen Prozess mit QProcess
Frage
Ich versuche, Microsoft Word verwenden QProcess
wie folgt zu starten:
QString program = "WINWORD.EXE";
process->start(program);
aber nichts passiert.
winword.exe
auf dem Pfad ist (so wenn i-Typ winword.exe Wort openning up).
Ist es der richtige Weg, dies zu tun?
Lösung
kann Code sein unter Ihnen helfen:
QProcess *process = new QProcess(this);
QString program = "explorer.exe";
QString folder = "C:\\";
process->start(program, QStringList() << folder);
Ich glaube, Sie versuchen, Programm auszuführen, die in nicht besteht nicht global $ PATH Fenster Variable, das ist, warum tut winword.exe nicht ausgeführt wird.
Auch müssen Sie absoluten Pfad zum Programm definieren, z.
QString wordPath = "C:\\Program Files\\Microsoft Office\\Office12\\WINWORD.EXE"
process->start(wordPath, QStringList() << "");
Andere Tipps
Für mich, ich brauche "characteres hinzuzufügen:
m_process->start("\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\"");
Von Qt Dokumentation:
Hinweis: Die Prozesse werden gestartet asynchron, was bedeutet, das gestartet () und Fehler () Signale sein können verspätet. Call waitForStarted () zu machen sicher, dass der Prozess begonnen hat (oder hat starten) und diese Signale fehlgeschlagen wurden emittiert wird.
Schließen Sie erwähnt die Signale in doc zu einem gewissen GUI-Steuerung oder Debug-Ausgabe und sehen, was passiert. Wenn ein Fehler auftritt, sollten Sie den Fehlertyp überprüfen mit QProcess :: Fehler ().
Wenn das Verfahren, in dem Sie versuchen, externen Prozess zu starten, ist fertig direkt nach dem Code, z.
void foo() {
...
QString program = "WINWORD.EXE";
process->start(program);
}
und Variable
process
wurde als lokale Variable deklariert, wird es am Ende des Verfahrens und kein externer Prozess wird gestartet zerstört werden. - oder richtig, werden Sie sehen es nicht, weil es direkt nach dem Start zerstört werden
Es war der Grund für ähnliches Problem in meinem Fall. Hoffe, es hilft.
Sie können nur das Arbeitsverzeichnis festgelegt:
myProcess = new QProcess();
myProcess->setWorkingDirectory("C:\\Z-Programming_Source\\Java-workspace\\Encrypt1\\bin\\");
Oder es beim Start:
myProcess->start("dir \"My Documents\"");
Beim Start () Sie einen Befehl für die Konsole eingeben ... lesen Sie das Handbuch.
Ich ziehe es die erste Option. Lesbarer.
QProcess *pro = new QProcess;
QString s = "\"C:\Users\xyz\Desktop\Example.exe";
pro ->start(s);