2009-09-30 6 views

答えて

11

ポータブル方法:

int retCode = system("prog.exe arg1 arg2 arg3"); 

埋め込まれた引用符/スペース付き:Windowsでは

int retCode = system("prog.exe \"arg 1\" arg2 arg3"); 
+0

paraそれらにスペースがあるメートル? (例えば、「arg 1」、「arg 2」) – Bill

4

に、あなたがしたい場合プロセスの制御をもう少し進めていくと、CreateProcessを使用してプロセスを起動することができます。WaitForSingleObjectが終了するまで待機し、GetExitCodeProcessはtを取得します。彼はコードを返します。

このテクニックを使用すると、子プロセスの入出力、その環境、およびそれが実行される方法に関する他のビットと部分を制御できます。

0

問題
C++プログラムから渡されたパラメータで実行可能ファイルを実行するにはどうすればよいですか?
ソリューション
使用ShellExecuteExSHELLEXECUTEINFO

問題
あなたはそれからの戻り値を取得するにはどうすればよいですか?
ソリューション
使用GetExitCodeProcessexitCode

外部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; 
    } 
} 
を使用する必要があります

Reference to know more detail