0

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

不知道是不是忘记了什么?如果我双击它,游戏运行良好。谢谢。

4

1 回答 1

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 原生 api,如以下链接中指出的 user827992:QProcess::startDetached 被 UAC 阻止(运行更新程序)

后一种解决方案也应该适用于 UAC 问题。

于 2012-07-10T12:09:11.273 回答