////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2 //プロセスを起動し、終了を待つ1 ShellExecuteEx版 ////////////////////////////////////////////////////////////////////////////////////////////////////////////SpecialSample2 void CShareDlg::OnButton8() { char pszWork1[512]; //画面から起動するプログラム名を取得する GetDlgItemText(IDC_EDIT3, pszWork1, sizeof(pszWork1)); SHELLEXECUTEINFO sei = { 0 }; //構造体のサイズ sei.cbSize = sizeof(SHELLEXECUTEINFO); //起動側のウインドウハンドル sei.hwnd = m_hWnd; //起動後の表示状態 sei.nShow = SW_SHOWNORMAL; //このパラメータが重要で、セットしないとSHELLEXECUTEINFO構造体のhProcessメンバがセットされない。 sei.fMask = SEE_MASK_NOCLOSEPROCESS; //起動プログラム sei.lpFile = (LPCSTR)pszWork1; //プロセス起動 if(!ShellExecuteEx(&sei) || (const int)sei.hInstApp <= 32){ TRACE("error ShellExecuteEx\n"); return; } //終了を待つ WaitForSingleObject( sei.hProcess, INFINITE ) ; }