我正在尝试使用QProcess
启动Microsoft单词,如下所示:
QString program = "WINWORD.EXE";
process->start(program);
但没有任何反应。
winword.exe
在路径上(所以当我输入winword.exe字时会打开)。
这是正确的方法吗?
答案 0 :(得分:12)
可能是以下代码可以帮助您:
QProcess *process = new QProcess(this);
QString program = "explorer.exe";
QString folder = "C:\\";
process->start(program, QStringList() << folder);
我认为您正在尝试执行不包含在全局$ PATH窗口变量中的程序,这就是为什么winword.exe不会执行。
此外,您可能需要定义程序的绝对路径,例如:
QString wordPath = "C:\\Program Files\\Microsoft Office\\Office12\\WINWORD.EXE"
process->start(wordPath, QStringList() << "");
答案 1 :(得分:5)
对我来说,我需要添加“characteres:
`m_process->start("\"C:\\Program Files (x86)\\Notepad++\\notepad++.exe\"");`
答案 2 :(得分:1)
来自Qt文档:
注意:流程已启动 异步,这意味着 started()和error()信号可能是 延迟。调用waitForStarted()来制作 确定该过程已经开始(或已经开始) 未能开始)和那些信号 已被释放。
将doc中提到的信号连接到某些GUI控件或调试输出,看看会发生什么。如果有错误,您应该使用QProcess :: error()检查错误类型。
答案 3 :(得分:0)
如果您尝试启动外部流程的方法在代码之后立即完成,例如:
void foo() {
...
QString program = "WINWORD.EXE";
process->start(program);
}
和变量
process
被声明为局部变量,它将在方法结束时被销毁,并且不会启动任何外部进程 - 或者你没有看到它,因为它会在启动后立即销毁。
这是我案中类似问题的原因。希望它有所帮助。
答案 4 :(得分:0)
您只需设置工作目录:
myProcess = new QProcess();
myProcess->setWorkingDirectory("C:\\Z-Programming_Source\\Java-workspace\\Encrypt1\\bin\\");
或者在开始时这样做:
myProcess->start("dir \"My Documents\"");
在开始()时,您可以输入控制台的命令...阅读手册。
我更喜欢第一种选择。更具可读性。
答案 5 :(得分:0)
foreach($object->toArray as $key=>$value){}