ShellExcute를 이용해서 연속적으로 커맨드를 실행할 경우
기다림 없이 실행한 수 만큼 커맨드를 띄워냄.
(약280개의 IO처리 커맨드가 떠서 시간이 처리가 버벅거림)
해서! 사용자가 잘 볼 수 있게! 커맨드 하나 하나씩 띄우는 방법을 찾아봄!
ShellExcuteEx함수를 이용하여 실행한 커맨드 창에 대한 핸드러를 취득!
WaitForSingleObject함수를 사용하여 커맨드창의 종료 여부에 대한 값을 가지고 온다.
소스 예)
SHELLEXECUTEINFO m_shell;
ZeroMemory(&m_shell, sizeof(SHELLEXECUTEINFO));
m_shell.cbSize = sizeof(SHELLEXECUTEINFO);
m_shell.lpFile = _T("실행파일경로");
m_shell.nShow = SW_SHOW;
m_shell.fMask = SEE_MASK_NOCLOSEPROCESS;
m_shell.lpParameter = _T("전달할 파라미터");
m_shell.lpVerb = _T("open");
ShellExecuteExW(&m_shell);
//** 0.5초 기다리고 종료여부 반환
DWORD dwResult = ::WaitForSingleObject(m_shell.hProces, 500);
while(true) {
if(dwResult == WAIT_OBJET_0) {
break;
} else {
dwResult = ::WaitForSingleObject(m_shell.hProces, 500);
}
}
출처 - http://glukjeoluk.tistory.com/entry/ShellExecuteEx-%EB%A1%9C-%EC%8B%A4%ED%96%89-%EC%8B%9C%ED%82%A8-%ED%8C%8C%EC%9D%BC-%EC%A2%85%EB%A3%8C-%EC%97%AC%EB%B6%80-%ED%99%95%EC%9D%B8
댓글 없음 :
댓글 쓰기