プロセスを実行して待つ

引数 file には、実行したいファイル名を入れる。
プロセスが実行出来たなら true、失敗なら false が返される。

bool executeApplication( const char* file ){
    STARTUPINFOA si;
    PROCESS_INFORMATION pi;
    
    ::ZeroMemory( &si , sizeof( si ) );
    ::ZeroMemory( &pi , sizeof( pi ) );
    si.cb = sizeof( si );
    
    BOOL bSuccess = ::CreateProcessA( NULL , (LPSTR)file , NULL , NULL , FALSE , 0 , NULL , NULL , &si , &pi );
    
    if( bSuccess ){
        ::WaitForSingleObject( pi.hProcess , INFINITE );
        ::CloseHandle( pi.hThread );
        ::CloseHandle( pi.hProcess );
        return true;
    }else{
        return false;
    }
}