私は混乱した問題に直面しています。私のアプリケーションには別のアプリケーション(B.exe)を起動できますフォルダ、A.exeとB.exeは同じフォルダにあるので、ここではB.exeの相対パスは "B.exe"です。私のアプリが別のアプリケーションから起動されたときに相対パスが変更されました
しかし、別のアプリケーション(C.exe)がA.exeを実行でき、C.exeが別のフォルダにあるため、A.exeがC.exeから起動されても実行できない場合はここで問題が発生しますC.exeは、エラーが出るので、C.exeを見つけることができないと言います。
したがって、相対パスが現在のC.exeフォルダに変更されていると思います。C.exeフォルダにはB.exeがありません。
友だちはこの問題を解決しましたか?または、この問題を解決するために、どのようにして別の州の正しい相対的な道を得ることができますか?私は私のc.exeを実行するためにShExecInfoを使用
は、いくつかのコードは以下の通りです:QStringList paramList;
paramList.push_back("requiresAdmin");
QString paramsAsOneString = paramList.join(' ');
LPCWSTR szParams = reinterpret_cast<LPCWSTR>(paramsAsOneString.utf16());
LPCWSTR szAppName = reinterpret_cast<LPCWSTR>(appName.utf16());
SHELLEXECUTEINFO ShExecInfo = { 0 };
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = L"runas";
ShExecInfo.lpFile = szAppName;
ShExecInfo.lpParameters = szParams;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
( 'GetModuleFileNameW'を使用して)' A.exe'のフルパスを取得し、最後に 'A.exe'を' B.exe'で置き換えるべきです。 – VTT
クール、私は完全なパスを使用して、それを解決する、ありがとう男! – AdvancingEnemy