|
WinExec 가 끝났는지 알려면, 해당 실행 파일을 열어 조작을 해봐서, 공유 원칙 위반이 나오면 사용중인 걸로 아는 이런 편법밖에 없습니다. 아랫분 말씀대로 CreateProcess를 사용하시면 됩니다. 아래 예제는 stCommand에 명령어를 넣으면, 해당 프로그램을 종료시킬 때까지 실행을 대기하는 함수 있습니다.
void __fastcall TMain::CreateCommand(String stCommand)
{
HWND hdWindow;
STARTUPINFO siParam;
PROCESS_INFORMATION piParam;
DWORD dwExitCode;
// 초기화
FillMemory(&siParam, sizeof(STARTUPINFO), 0);
FillMemory(&piParam, sizeof(PROCESS_INFORMATION), 0);
// Param 섯팅
siParam.cb = sizeof(STARTUPINFO);
siParam.dwFlags = STARTF_USESHOWWINDOW;
siParam.wShowWindow = SW_HIDE;
CreateProcess(NULL, stCommand.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &siParam, &piParam);
WaitForInputIdle(GetCurrentProcess(), INFINITE);
// 프로세스가 종료될때까지 대기함
if(piParam.hProcess) {
dwExitCode = STILL_ACTIVE;
while(dwExitCode == STILL_ACTIVE) {
WaitForSingleObject(piParam.hProcess, 1000);
GetExitCodeProcess(piParam.hProcess, &dwExitCode);
UpdateWindow(Handle);
}
}
}
심심 님이 쓰신 글 :
: 안녕하세요.. 제글에 관심가져 주셔서 감사드려요..
: 제가 WinExec()로 도스용 어플리케이션을 하나 실행시켰거든요.. 근데 이 WinExec에서 실행시킨 도스용 어플리케이션이 끝나면 다른 일을 수행하려 해요... 근데 이 도스용 어플리 케이션이 끝날
: 때를 알수가 없네요... 어떻게 알수 없을까요??? 편법이라도.... 아시는 분 있으면 어떠한 조언이라도 부탁드립니다... 답변 미리 감사드리고요.. 즐거운 하루되시고 즐프하세요.. 그럼 (__)꾸벅
|