本文主要是介绍QProcess启动多个外部程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家都知道Qt与外部程序通讯的其中一种方式:QProcess。
最近需要使用不同参数将一个EXE启动多个进程,遇到了启动不成功的情况,在此做个记录。
首先说最优解,使用QDir设置应用程序当前工作目录:
#include <QDir>// 设置应用程序当前目录
QString appDir = QApplication::applicationDirPath();
QDir::setCurrent(appDir + "/TestDir/Dir01/");QProcess process;
// param1: 应用程序名称
// param2: 应用程序执行参数
process.startDetached("Test.exe", QStringList() << "param");// 恢复应用程序当前目录
QDir::setCurrent(appDir);
其次也可以使用QProcess的方法setWorkingDirectory()方法,但是实测有时有问题
QString appDir = QApplication::applicationDirPath();QProcess process;
// QProcess会在设置的目录下执行Test.exe
process.setWorkingDirectory(appDir + "/TestDir/Dir01/");
process.startDetached("Test.exe", QStringList() << "param");
再者也可以使用QProcess的startDetached()方法的第三个参数
QString appDir = QApplication::applicationDirPath();QProcess process;
// param1: 应用程序名称
// param2: 应用程序启动参数
// param3: Test.exe会在此路径下启动
process.startDetached("Test.exe", QStringList() << "param", appDir + "/TestDir/Dir01/");
后面两个方法测试过程中会出现启动不成功的情况。
这篇关于QProcess启动多个外部程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!