使用Qt打开外部游戏应用程序

时间:2012-07-10 10:25:50

标签: windows qt

我有一个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();
    }
}

我不知道我是否遗忘了什么?如果我双击它,游戏运行正常。感谢。

1 个答案:

答案 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问题。