프로세스를 실행시키고.. 해당프로세스의 작업이 완료되었는지 기다린뒤 다음 코드를 수행하는 루틴
CString strDir;
char szDrive[_MAX_DRIVE], szDir[_MAX_DIR];
_splitpath(g_strFilePath.GetBuffer(g_strFilePath.GetLength()),szDrive,szDir,NULL,NULL);
strDir.Format("%s%s",szDrive,szDir);
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof (SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = "open";
sei.lpFile = g_strFilePath;
sei.lpDirectory = strDir.GetBuffer(strDir.Length());
sei.lpParameter = "test.txt -t.."
sei.nShow = SW_SHOWNORMAL;
if (ShellExecuteEx (&sei))
{
WaitForSingleObject (sei.hProcess, INFINITE);
}
// 익스플로러 띄우기..
ShellExecute(NULL, "open", "iexplore.exe", "http://dynaforce.tistory..com", NULL, SW_SHOWNORMAL);
////////////////////////////////////////////////////////////////////////////////////////////
WaitForSingleObject앞에
WaitForInputIdle(sei.hProcess, INFINITE);//해당프로그램이 초기화완료될때까지 대기
프로그램의 초기화 시간이 긴 경우 사용
ps. ShellExecuteEx안에서 CreateProcess를 내부적으로 호출
CString strDir;
char szDrive[_MAX_DRIVE], szDir[_MAX_DIR];
_splitpath(g_strFilePath.GetBuffer(g_strFilePath.GetLength()),szDrive,szDir,NULL,NULL);
strDir.Format("%s%s",szDrive,szDir);
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof (SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = "open";
sei.lpFile = g_strFilePath;
sei.lpDirectory = strDir.GetBuffer(strDir.Length());
sei.lpParameter = "test.txt -t.."
sei.nShow = SW_SHOWNORMAL;
if (ShellExecuteEx (&sei))
{
WaitForSingleObject (sei.hProcess, INFINITE);
}
// 익스플로러 띄우기..
ShellExecute(NULL, "open", "iexplore.exe", "http://dynaforce.tistory..com", NULL, SW_SHOWNORMAL);
////////////////////////////////////////////////////////////////////////////////////////////
WaitForSingleObject앞에
WaitForInputIdle(sei.hProcess, INFINITE);//해당프로그램이 초기화완료될때까지 대기
프로그램의 초기화 시간이 긴 경우 사용
ps. ShellExecuteEx안에서 CreateProcess를 내부적으로 호출