我有一个Windows qt应用程序,我正在尝试打开一个外部游戏,但我没有成功。
应用程序位于C:\ games \ Oni \ Edition \并且被称为Oni.exe,我现在使用的代码如下:
void MainWindow::on_toolButton_clicked()
{
qint64 test=1;
if(!QProcess::startDetached("Oni.exe",QStringList(),"C:\\games\\Oni\\Edition\\",&test)){
QMessageBox msgBox;
msgBox.setText("Oni couln't be started!");
msgBox.exec();
}
}
我不知道我是否遗忘了什么?如果我双击它,游戏运行正常。感谢。
答案 0 :(得分:2)
好吧,想通了。
刚刚更换了代码:
QProcess::startDetached("Oni.exe",QStringList(),"C:\\games\\Oni\\Edition\\",&test)
通过
QProcess::startDetached("C:\\games\\Oni\\Edition\\Oni.exe",QStringList(),"C:\\games\\Oni\\Edition\\",&test)
它的工作就像一个魅力。
之前我曾尝试过QProcess::startDetached("C:\\games\\Oni\\Edition\\Oni.exe");
但是没有用,似乎我们需要将可执行文件的完整目录以及完整目录作为工作目录。 这因为似乎只是直接执行文件,当文件夹在游戏文件夹中时,文件本身可能正在查找QT Debug文件夹中的其他文件夹/文件。这导致游戏过早退出。 :)
另一个解决方案是使用windows native api,如user827992,在以下链接中指出:QProcess::startDetached blocked by UAC (running an updater)
后一种解决方案也应该可以解决UAC问题。