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デバッグフォルダー内の別のフォルダー/ファイルを探している可能性があります。これにより、ゲームが途中で終了します。:)

別の解決策は、次のリンクで指摘されているuser827992のようなWindowsネイティブAPIを使用することです。QProcess:: startDetachedがUACによってブロックされています(アップデーターを実行しています)

この後者のソリューションは、UACの問題でも正常に機能するはずです。

于 2012-07-10T12:09:11.273 に答える