MFCでexe起動。終了を待つ。

CString exe_path;
exe_path = "c:\\hogehoge.exe";

SHELLEXECUTEINFO	sei = { 0 };
//構造体のサイズ
sei.cbSize = sizeof(SHELLEXECUTEINFO);
//起動側のウインドウハンドル
sei.hwnd = NULL;
//起動後の表示状態
sei.nShow = SW_SHOWNORMAL;
//このパラメータが重要で、セットしないとSHELLEXECUTEINFO構造体のhProcessメンバがセットされない。
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
//起動プログラム
sei.lpFile = exe_path.GetBuffer(0);

//実行ディレクトリ指定するなら
//sei.lpDirectory

// 実行時にパラメータつけるなら
//sei.lpParameters

//プロセス起動
if (!ShellExecuteEx(&sei) || (const int)sei.hInstApp <= 32) {
	// 失敗
	return;
}
//終了を待つ
WaitForSingleObject(sei.hProcess, INFINITE);

ネタ元

hp.vector.co.jp