ShellExecuteEx を使用してアプリケーションを起動する必要がある qt でアプリケーションに取り組んでいます。バッチ ファイルを実行していますが、2 つの引数を渡す必要があります。最初の引数は単なる文字ですが、2 番目の引数はスペースを含む場合と含まない場合があるパスです。私が何をしても、それはスペースを逃れません。エスケープされた引用符を含めると、実際には呼び出し全体が壊れているようです。問題はルナにあると思います。それがどのように機能するかは100%わかりませんが、呼び出しをコピーしてエスカレートされたシェルで実行しているようです。このプロセスは、追加された引用符で壊れているようです。
これが私のShellExecuteコードです。引数を 1 つ渡すように簡略化しましたが、それでも壊れます。
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"runas";
ShExecInfo.lpFile = L"test.bat";
ShExecInfo.lpParameters = L"\"test param\"";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
完全を期すために、ここに test.bat があります
@echo off
pause
私が得るシェル出力は次のとおりです。
'J:\Repositories\Qt' is not recognized as an internal or external command, operable program or batch file.
スクリプトへのパスは
J:\Repositories\Qt Project\debug\test.bat
元のパスを台無しにするため、最初のコマンドが失敗することがわかります。
このような runas コマンドで引数に引用符を含める方法はありますか?