C++プログラムからパラメータを渡して実行可能ファイルを実行するにはどうすればよいのですか?また、その戻り値をどのように取得しますか?C++でパラメータを含む実行可能ファイルを実行し、戻り値を取得します。
このような何か: C:\ myprogram.exeという-v
C++プログラムからパラメータを渡して実行可能ファイルを実行するにはどうすればよいのですか?また、その戻り値をどのように取得しますか?C++でパラメータを含む実行可能ファイルを実行し、戻り値を取得します。
このような何か: C:\ myprogram.exeという-v
ポータブル方法:
int retCode = system("prog.exe arg1 arg2 arg3");
埋め込まれた引用符/スペース付き:Windowsでは
int retCode = system("prog.exe \"arg 1\" arg2 arg3");
に、あなたがしたい場合プロセスの制御をもう少し進めていくと、CreateProcessを使用してプロセスを起動することができます。WaitForSingleObjectが終了するまで待機し、GetExitCodeProcessはtを取得します。彼はコードを返します。
このテクニックを使用すると、子プロセスの入出力、その環境、およびそれが実行される方法に関する他のビットと部分を制御できます。
問題
C++プログラムから渡されたパラメータで実行可能ファイルを実行するにはどうすればよいですか?
ソリューション
使用ShellExecuteEx
とSHELLEXECUTEINFO
問題
あなたはそれからの戻り値を取得するにはどうすればよいですか?
ソリューション
使用GetExitCodeProcess
とexitCode
外部exeファイルで処理しているあなたは、プロセスまで待ちたい場合は
を知ることが不可欠なものは、終了し、その後、WaitForSingleObject
bool ClassName::ExecuteExternalExeFileNGetReturnValue(Parameter ...)
{
DWORD exitCode = 0;
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile = _T("XXX.exe");
ShExecInfo.lpParameters = strParameter.c_str();
ShExecInfo.lpDirectory = strEXEPath.c_str();
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
if(WaitForSingleObject(ShExecInfo.hProcess,INFINITE) == 0){
GetExitCodeProcess(ShExecInfo.hProcess, &exitCode);
if(exitCode != 0){
return false;
}else{
return true;
}
}else{
return false;
}
}
を使用する必要があります
paraそれらにスペースがあるメートル? (例えば、「arg 1」、「arg 2」) – Bill