私のアプリケーションでは、ローカルアプリケーションデータフォルダから分離プロセスを実行します。以下のコードは、ほとんどのケースで機能します。いくつかのテストを実行するQProcess - パスに空白が含まれているプロセスを実行しています
void executeApp(const QString &id)
{
QString program = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
program = program + "\\..\\Programs\\MyApp.exe";
QStringList arguments;
arguments << "--app_id="+id; //it is only one argument
QProcess* process = new QProcess(this);
bool success = process->startDetached(program, arguments);
if (!success) //TODO: Error handling
qDebug() << "Couldn't start process at " << program << process->errorString();
}
、私は(Windowsが実際にいることができます)、それにスペースが含まれているときに、Windowsアカウントのユーザー名、それが動作しないことが分かりました。
どうすれば修正できますか?
---編集:
投稿回答に基づいて、私は少しにコードを変更しました。しかし、私はまだ下のコードからQMessageBoxに「不明なエラー」を取得しています。username内の1つの空白を持つユーザが存在する場合に
void executeApp(const QString &id)
{
QString program = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
program = QDir(program + "/../Programs/MyApp.exe").absolutePath();
QStringList arguments;
arguments << "--app_id="+id; //it is only one argument
QProcess* process = new QProcess(this);
bool success = process->startDetached(program, arguments);
if (!success)
QMessageBox::critical(NULL, tr("Launching App"), process->errorString());
}
を強化、それだけで...起こる
私は引用符(「」)を使用して試してみたが、それは両方の言及のため –