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
[54526] Re:Re:외부 프로그램 실행 질문이요!!
장성호 [nasilso] 1986 읽음    2008-09-09 18:38
[FindWindow를 이용하는 방법에 대해]
FindWindow를 이용하는것은 확실한 방법이 아닙니다.

왜냐하면
Test.exe가 Window프로그램이 일수도 있고 아닐수도 있구
또 똑같은 프로그램이 여러개 뜰수도 있구...

Test.exe가  Window프로그램이고 , 오직 하나만 실행된다 하더라도
Form이 Minimize되거나 Hide되어있는경우 FindWindow로 잘 찾아지지 않습니다.

그러니 FindWindow로 프로그램이 살아있는지 종료했는지 확인하는것은 잘못된 방법이라 할수있습니다.


[WaitForSingleObject를 이용하여]

CreateProcess , ShellExecuteEx 로 프로그램을 실행시키시구요
Process Handle을 얻어서

WaitForSingleObject를 호출하여 기다리면 됩니다.

WaitForSingleObject(hProcess,INFINITE); //이런식으로..
그럼 실행시킨 프로그램(hProcess)가 종료되면 WaitForSingleObject에서 return됩니다.


그럼..

Lyn 님이 쓰신 글 :
: 젤 간단한건..
:
: FindWindow 로 계속 찾아서 끝날때를 검출하는것..
:
:
: S시온스S 님이 쓰신 글 :
: : 안녕하세요.
: :
: :
: : 제가 다른 외부 프로그램을 실행시켜서 그 프로그램이 끝날때까지 기다렸다가 그 프로그램이 끝나면
: : 그 외부 프로그램을 지우는걸 만들고싶어요.
: :
: : ----------------------------------------------------------------------
: : char buff[200];
: : for(int i=0; i<200; i++) buff[i] = 20;
: : getcwd(buff,200);
: :
: : if(ShellExecute( 0,0, "Test.exe" ,buff,"",0) == false){
: :   exit(0);
: : }
: : ----------------------------------------------------------------------
: :
: :
: : 이렇게 컴파일했는데요.
: :
: : Texe.exe 현재폴더
: :
: : 이렇게해서 실행하는 프로그램이에요
: :
: :
: : 그런데 지금 저 ShellExcute한 Test.exe가 종료될때까지 기다렸다가
: : 저 "test.exe"파일을 지우고 프로그램이 종료되는 형태를 취했으면 좋겠어요.
: :
: : 어떤걸 써야하죠? 힌트라도 ;;

+ -

관련 글 리스트
54521 외부 프로그램 실행 질문이요!! S시온스S 1197 2008/09/09
54526         Re:Re:외부 프로그램 실행 질문이요!! 장성호 1986 2008/09/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.