2

QProcessとして実行されているWindowsコマンドラインアプリケーションから特定のエラーコードをキャッチしようとしています.

今日、アプリケーションが失敗するエラーが発生しました: コマンド ラインで実行すると、echo %errorleve% は正しいエラーである 14001 (ERROR_SXS_CANT_GEN_ACTCTX) を返します。

私の Qt アプリケーションでは、このアプリケーションを呼び出す QProcess で exitCode() を呼び出すと、戻り値として 0 が返されます。

このプロセスの正しいエラーレベルを取得する方法はありますか? シンプルなものが欠けていると思います。

元:

proc_->start(bridge_config_.exePath(), args);
if (proc_->state() == QProcess::NotRunning){
    handleProcessFailedToStart(proc_->exitCode());
}
4

1 に答える 1

3

QProcess::start は、プロセスが開始または終了するまでブロックしません。したがって、 exitCode() をすぐに呼び出すと、プロセスがまだ開始されていないため、有効になりません。finished() および error() シグナル (UI アプリケーションで推奨される非ブロッキングの代替手段) に接続して、終了コードを取得するか、waitForStarted() および/または waitForFinished() (ブロック、二次的な非UI スレッドまたは CLI プログラム内)、次に exitCode()。

于 2011-05-02T19:12:36.183 に答える