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?

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top