【发布时间】:2010-04-12 14:39:49
【问题描述】:
我正在尝试使用QProcess 启动 Microsoft Word,如下所示:
QString program = "WINWORD.EXE";
process->start(program);
但什么也没发生。
winword.exe 在路径上(所以当我输入 winword.exe 时,单词正在打开)。
这是正确的做法吗?
【问题讨论】:
我正在尝试使用QProcess 启动 Microsoft Word,如下所示:
QString program = "WINWORD.EXE";
process->start(program);
但什么也没发生。
winword.exe 在路径上(所以当我输入 winword.exe 时,单词正在打开)。
这是正确的做法吗?
【问题讨论】:
下面的代码可能会对您有所帮助:
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 文档:
注意:进程已启动 异步,这意味着 started() 和 error() 信号可能是 延迟。调用 waitForStarted() 使 确保该过程已开始(或已 未能启动)和那些信号 已发出。
将文档中提到的信号连接到一些 GUI 控件或调试输出,看看会发生什么。如果有错误,你应该使用 QProcess::error() 检查错误类型。
【讨论】:
如果您尝试启动外部进程的方法在您的代码之后立即完成,例如:
void foo() {
...
QString program = "WINWORD.EXE";
process->start(program);
}
和变量
process
被声明为局部变量,它将在方法结束时被销毁,并且不会启动任何外部进程 - 或者正确你不会看到它,因为它会在启动后立即被销毁。
在我的案例中,这是出现类似问题的原因。希望对您有所帮助。
【讨论】:
你可以只设置工作目录:
myProcess = new QProcess();
myProcess->setWorkingDirectory("C:\\Z-Programming_Source\\Java-workspace\\Encrypt1\\bin\\");
或者一开始就做:
myProcess->start("dir \"My Documents\"");
在 start() 中,您可以为控制台输入命令...阅读手册。
我更喜欢第一个选项。更具可读性。
【讨论】:
QProcess *pro = new QProcess;
QString s = "\"C:\Users\xyz\Desktop\Example.exe";
pro ->start(s);
【讨论】: