IT-개발/winapi 및 MFC
process 실행 및 종료까지 대기 sample
갱우덩
2018. 10. 29. 18:45
반응형
(1. WaitForSingleObject 를 사용한 방법 : 펌 - http://sijoo.tistory.com/288)
SHELLEXECUTEINFO info;
// 실행을 위해 구조체 세트
ZeroMemory( &cinfo,
sizeof
(info) );
info.cbSize =
sizeof
(info);
info.lpVerb =
"open"
;
info.lpFile =
"C:\\aaa\\aaa.exe"
;
info.lpParameters =
"\"c:\\a.txt\""
;
info.fMask = SEE_MASK_NOCLOSEPROCESS;
info.nShow = SW_SHOWDEFAULT;
// 프로그램을 실행한다.
int
r = (
int
)ShellExecuteEx( &info );
//프로세스가 종료될 때까지 무한정 기다림
WaitForSingleObject(info.hProcess, INFINITE);
(2. Loop 돌면서 확인하는 방법 방법 : 펌 - https://zemnablog.wordpress.com/2007/08/27/shellexecuteex-%ED%95%A8%EC%88%98-%EC%A2%85%EB%A3%8C%EC%8B%9C%EC%A0%90-%EC%9E%A1%EA%B8%B0/)
SHELLEXECUTEINFO shExIf;
DWORD
dwExitCode;
CString FileName =
"jpk.exe"
;
shExIf.lpDirectory =
"C:my_folder"
;
shExIf.lpParameters =
""
;
shExIf.cbSize =
sizeof
( SHELLEXECUTEINFO );
shExIf.lpVerb =
"open"
;
shExIf.lpFile = FileName;
shExIf.nShow = SW_HIDE;
shExIf.fMask = SEE_MASK_NOCLOSEPROCESS;
ShellExecuteEx( &shExIf );
dwExitCode = 0;
while
(1)
{
::GetExitCodeProcess( shExIf.hProcess, &dwExitCode );
if
( dwExitCode != STILL_ACTIVE )
{
MessageBox(
" jpk.exe 종료"
);
break
;
}
}