C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[17500] Re:질문... WinExec루틴이 끝났는지를 알수 있을까요???
유영인 [Chris] [cuperido] 2257 읽음    2002-04-13 10:21
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에서 실행시킨 도스용 어플리케이션이 끝나면 다른 일을 수행하려 해요... 근데 이 도스용 어플리 케이션이 끝날
: 때를 알수가 없네요... 어떻게 알수 없을까요??? 편법이라도.... 아시는 분 있으면 어떠한 조언이라도 부탁드립니다... 답변 미리 감사드리고요.. 즐거운 하루되시고 즐프하세요.. 그럼 (__)꾸벅

+ -

관련 글 리스트
17459 질문... WinExec루틴이 끝났는지를 알수 있을까요??? 심심 998 2002/04/12
17500     Re:질문... WinExec루틴이 끝났는지를 알수 있을까요??? 유영인 [Chris] 2257 2002/04/13
17461     Re:질문... WinExec루틴이 끝났는지를 알수 있을까요??? 지나가는 사람 1207 2002/04/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.