我正在尝试使用以下方式使用QProcess
启动Microsoft Word:
QString program = "WINWORD.EXE";
process->start(program);
但是什么也没有发生。
winword.exe
在路径上(所以当我键入winword.exe时,Word会打开)。
这样做是正确的吗?
也许下面的代码可以帮到你:
QProcess *process = new QProcess(this);
QString program = "explorer.exe";
QString folder = "C:\\";
process->start(program, QStringList() << folder);
我认为你正在尝试执行不在全局 $PATH Windows 变量中的程序,这就是为什么 winword.exe 无法执行的原因。
另外,你可能需要定义程序的绝对路径,例如:
QString wordPath = "C:\\Program Files\\Microsoft Office\\Office12\\WINWORD.EXE"
process->start(wordPath, QStringList() << "");
m_process->start("\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\"");
来自Qt文档:
注:进程是异步启动的,这意味着已启动信号和错误信号可能会延迟。调用waitForStarted()以确保进程已启动(或无法启动),并且已发出那些信号。
将文档中提到的信号连接到某个GUI控件或调试输出,然后查看结果。如果有错误,您应该使用QProcess::error()检查错误类型。
void foo() {
...
QString program = "WINWORD.EXE";
process->start(program);
}
和变量
process
被声明为局部变量,它将在方法结束时被销毁,并且不会启动任何外部进程 - 或者正确地说,您将看不到它,因为它将在启动后立即被销毁。
这是我遇到类似问题的原因。希望能有所帮助。
QProcess *pro = new QProcess;
QString s = "\"C:\Users\xyz\Desktop\Example.exe";
pro ->start(s);
您可以直接设置工作目录:
myProcess = new QProcess();
myProcess->setWorkingDirectory("C:\\Z-Programming_Source\\Java-workspace\\Encrypt1\\bin\\");
或者在开始时执行:
myProcess->start("dir \"My Documents\"");
在 start() 函数中,您可以输入控制台命令...请阅读手册。
我更喜欢第一种选项。更易读。