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
[17835] Re:Re:Re:Re:[임시 결과] 이렇게 해봤더니 되긴하는데, 그 이유는 아직..
백상열 [] 940 읽음    2002-04-22 16:54
다음처럼 이렇게 만들어봤습니다.

main() // ========> testa.exe
{
  WinExec("testb.exe",1);
  ShowMessage("testb.exe를 성공적으로실행하고 리턴되었습니다..");
  exit(1);
}

main() //========> testb.exe
  HWND hwnd = FindWindowEx(NULL, NULL, NULL, "testa");
  if(hwnd) ShowMessage("핸들있음!"); else ShowMessage("핸들없음 NULL !");
  CloseHandle(hwnd);
  if(FileExists("testa.exe")) DeleteFile("testa.exe");
  exit(1);
}

이렇게하니깐 testb.exe를 콜한 testa.exe파일도 지워집니다.
근데, 웃기는건 testb.exe에서 넣어두었던 test용 코드.. 즉,
if(hwnd) ShowMessage("핸들있음!"); else ShowMessage("핸들없음 NULL !");
입니다.
이게 들어있을경우 testa.exe가 삭제되고,
이걸 빼버리면, testa.exe가 제데로 삭제가 안된다는겁니다.
이건 아무런 영향도없는건디 말입니다. 되는이유는뭐고 또 안되는 이유..
그 이유를 아직모르겄는데,,,, 혹시, 이 현상을 설명해주실분 계신가요 ?
이방법말고,, 혹시 또다른 방법을 알고계시면 조언이나 힌트라도주시면 고맙겠습니다.

             -- 돌파리 올림 --


이정미 님이 쓰신 글 :
: a.exe 에서 b.exe 를 구동시키고, b.exe 가 구동될때
:
: b.exe 에서 a.exe 를 종료시키시면 될것 같은데여....
:
: 간단한거니까 한번 해보보시구 잘되는가 알려주세여....
:
:    //--->
:    HWND hwnd = FindWindowEx(NULL, NULL, NULL, "a");
:
:    if(hwnd)
:    {
:       PostMessage(hwnd, WM_QUIT, 0, 0);
:    }
:
:    //--->
:    DeleteFile("a.exe");
:
:    //--->
:
: 백상열 님이 쓰신 글 :
: : 답변 감사드립니다..
: :
: : 저두 그렇게하면 되는줄 알았는데, 안되더라구요,
: : 논리적으로 가만히 생각해봐도... 그건 a.exe프로그램이 b.exe를 일단 Call하면
: : 하위process(b.exe)가 실행되는거고요,
: : a.exe엔 비록 뭐 exit(1);이나 뭔가가 있더라도, 어쨌거나 하위프로세서b.exe가 실행을
: : 끝내기전에는 종료되지않고 그게 끝나기를기다려 리턴값을 받아처리하게되지요,
: :
: : 그러므로 b.exe에 Delete커멘드가 있더라도 실행중인 프로그램a.exe는
: : 에러(즉, a.exe파일이 안지워짐)가 날거같더군요.,.
: :
: : 그래서 생각해보니 이건 프로세서실행또는 프로세스종료 차원에서 접금을 해야될거같습니다.
: : 아직 연구중이라, 뭐 꼭 짚히는곳은 없지만,
: : 예전에나온 볼랜드 Turbo-C 시리즈를 볼떄 그런 프로세서에관한건 언듯한번 본거같습니다
: : SpawnX()라든가, 아니면 Spawnl()이라든가, execX()라든가 뭐라든가..
: : 아무튼 저두 연습중이니깐 곧 알수있겠지요.. 열심히 찾아보고 test중입니다.
: :
: : 혹시 이부분에 아시는분있으면 답장 부탁합니다. 그럼..
: :
: :
: : 최준호.스페로 님이 쓰신 글 :
: : : 백상열 님이 쓰신 글 :
: : : : 다소 어려운 문제가있습니다.
: : : :
: : : : 실행하던 A프로그램(컨트롤)을 죽이고, 아주 그프로그램(a.exe)파일을
: : : : 삭제하는 프로그램(b.exe)를 실행하도록 하려는겁니다.
: : : :
: : : : a.exe 내부에서 b.exe를 실행하고 자신(a.exe)은 실행을 중단해야할 뿐만아니라
: : : : b.exe에서는 a.exe프로그램(파일)을 삭제해야하는데, 어떻게하면 가능한지요?
: : : :
: : : : 도사님의 답변을 구합니다. 그럼..
: : :
: : : 안녕하세요 스페로 입니다.
: : :
: : : 제 생각입니다. 실제로 구현 해보지는 않았습니다.
: : :
: : : 먼저 A프로그램에서 B프로그램을 실행시키는 코드로 B를 실행 합니다.
: : :
: : : WinExec("B.EXE",1);
: : :
: : : 물론 위함수를 호출할때는 정확한 경로를 정해주어야 하구요
: : :
: : : 그다음 A프로그램에서
: : :
: : : exit() 함수로 올바르게 종료 합니다.
: : :
: : : B프로그램은 이미 수행되었겟지요
: : :
: : : B프로그램은 시작시 바로 A프로그램을 제거 하게 합니다.
: : :
: : : DeleteFile("A.EXE");
: : :
: : : 설마 A프로그램이 아직도 종료 되지 않았을까요? A프로그램은 B를 호출하자마자 끝났을겁니다.
: : :
: : : 그럼 문제가 없겠지요.
: : :
: : : 이런식으로 하면 해결되지 않을까요?
: : :
: : : ^^그럼

+ -

관련 글 리스트
17766 [질문]다소 어려운질문임다.다른b.exe를 실행하고 자신a.exe파일은 삭제당해야하는데,, 백상열 744 2002/04/18
17768     Re:[질문]다소 어려운질문임다.다른b.exe를 실행하고 자신a.exe파일은 삭제당해야하는데,, 최준호.스페로 840 2002/04/19
17790         Re:Re:[질문]다소 어려운질문임다.다른b.exe를 실행하고 자신a.exe파일은 삭제당해야하는데,, 백상열 889 2002/04/19
17805             Re:Re:Re:[질문]다소 어려운질문임다.다른b.exe를 실행하고 자신a.exe파일은 삭제당해야하는데,, 이정미 965 2002/04/20
17835                 Re:Re:Re:Re:[임시 결과] 이렇게 해봤더니 되긴하는데, 그 이유는 아직.. 백상열 940 2002/04/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.