Q&A

  • CreateProcess함수로 생성한 process(sub-process포함)가 모두 종료하길 기다리는 방법은?
CreateProcess API함수로 생성한 process A가 종료할 때까지 기다리게 하는 코딩은 알겠는데요!

이 process A가 생성한 sub process B가 종료할 때까지 기다리게 하는 코딩은 감을 잡을 수가 없습니다.

위와 같이 process가 sub의 sub로 계속 생길 수도 있겠죠!

이런 경우, CreateProcess로 생성한 process와 그의 모든 sub process가 종료하는 시점을 잡을 수 있는 코딩을 알려 주세요.

도움말을 보니까, 파라매터에 상속이 어떻고 저떻고 하는 것 보니까...
적절한 파라매터 설정으로 가능할 것 같기도 한데요!
(이 놈의 영어가 천추에 恨이네요! TT)

고수님 부탁합니다.
3  COMMENTS
  • Profile
    최용일 2002.07.16 02:27
    안녕하세요. 최용일입니다.

    리스트같은 걸 써서 프로세스 리스트를 관리하시면 될거같은데요...

    CreateProcess로 프로세스 생성할때마다 프로세스 핸들을 리스트에 넣어주고, 종료할때 빼주면 리스트에 아무것두 남지 않으면 모든게 종료되는 시점이 아닐런지...

    ^^ 항상 즐코하세요...

  • Profile
    김동광 2002.07.16 03:25
    sub process는 코딩으로 CreateProcess함수로 만드는 것이 아니구요!
    CreateProcess함수에 의해 생성된 process가 만드는 sub process(sub job)입니다.
    process가 묵시적으로 생성하는 sub process의 Handle를 감시할 수 있다면
    가능할 듯도 한데요?

    최용일씨께 진심으로 감사드립니다.
    전에도 질의에 답해 주셨고, 가장 활발하게 답변을 하시는 걸 보니
    뭐하시는 어떤 분인지 궁금해 지는 군요.

    제가 코딩하는 내용은
    윈도우즈의 폴더공유 취약성 보안팻치여부를 검사하여 보안팻치하는 것입니다.
    바로 온라인 팻치가 완료되면 팻치실행 버튼을 숨기는 등등을 하는 것이죠.

    그러다 보니 레지스트리를 검사하고, 웹링크 팻치실행하고, 레지스트리 검사하는 순서로 되어 있습니다.
    글쎄, 팻치하고자 할 때 브라우져 process가 생성되고, 이 process가 다시 패치파일을 바로 실행시키면 팻치하는 sub process가 생성되더군요.

    문제는 CreateProcess함수로는 위와 같이 브라우져process 종료시점은 잡을 수 있는데, 이것의 sub process인 팻치실행process의 종료시점은 잡을 수가 없어서 문제입니다.
    원하는 것은 팻치가 완료되었을 때, 팻치가 완성되었는지 레지스트리를 검사해야 하거든요!

  • Profile
    최용일 2002.07.16 04:02
    전체 프로세스 리스트를 루프를 돌면서 갱신하면서 검색하시다가 원하시는 서브프로세스가 검색되어질때 그 핸들을 구해서 끝날때까지 기둘리시면 되지 않나요?

    전체 프로세스 리스트 구하시는건 질답란에 검색해보시면 있습니다...

    • 바다를향해
      2002.07.18 12:40
      혹시 ShellExecute 말구요 i := Winexec('explorer.exe mailto:kst007@netian.com', SW_HIDE); 이걸 사용...
    • 장태원
      2002.07.16 05:23
      무슨 에런진 해석할수가 없네용.ㅠㅡ; project 파일에 해당 프로그램이 선언되어 있는지? 또..mdichi...
    • 배경
    • 2002.07.16 03:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2002.07.16 05:39
      CHKIO 에 RTRIM 한번 해보심이..
    • 이동현
    • 2002.07.16 03:03
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정종우
      2002.07.24 02:17
      오른쪽 껏을 눌렀는데 아무런 응답이 없는상태(101키)라면 오른쪽 키를 지원하는 드라이버(106키)로 바꿨...
    • 한원희
      2002.07.16 04:28
      음냐, CTRL 키가 눌렸을 때, Enter키가 눌린것 처럼 동작해야할 일이 있나요? 음... 별로 추천할 만한 일...
    • 장영철
    • 2002.07.16 02:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2002.07.16 05:38
      US7ASCII 이거 때문이 아닐까 싶네요..language드라이버를 kor....로 바꿔주셔 보심이...
    • 최용일
      2002.07.16 03:21
      안녕하세요. 최용일입니다. 소수가 뭔지만 알면 금방 할 수 있는건데... 1하고 자기자신으로만 나누...
    • 도리도리
      2002.07.16 21:46
      네..답변 주셔서 감사합니다..그런데 제가 공부하는 입장이기에 무작정 님께서 오려주신 내용을 보고 할...
    • 최용일
      2002.07.16 23:15
      100이하의 소수를 구하니까 루프변수는 100까지가 되겠구요... 모든 수가 1로 나누어 지니까 1은 제외하...
    • 권대경
    • 2002.07.16 02:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.07.16 04:42
      TValueListEditor 로는 비슷하기는 해도 불가능하지 않나요? 제가 사용해본 컴포넌트 중에 FlyTree 라는...
    • 권대경
      2002.07.17 02:21
      좋은 정보 주셔서 감사합니다. 님의 말대로 TValueListEditor로는 구현이 불가능한 것  같...
    • 장태원
      2002.07.16 05:35
      DBCtrlGrid 에서 컴퍼넌트 올려놓으실때..한 레코드 안에 다 넣어주세요. 마치 한레코드를 보이기에는 ...
    • 곽충열
      2002.07.16 06:11
      답변 감사드립니다. 근데 문제는 레코드 개수가 정해져 있지 않거든요.. 제 경우 Row가 다섯개가 생...
    • 김길명
    • 2002.07.16 02:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.16 02:33
      안녕하세요. 최용일입니다. 검색해보시면 있는데... 쩝~ Re: 법인번호가 올바른지 체크하는 방법...
    • 한원희
      2002.07.16 04:38
      일단 포커스를 갖을 수 있는 컨트롤은 TWinControl 에서 상속받은 것만 가능하기 때문에 다음과 같이 코딩...
    • 홀로서기
      2002.07.16 18:38
      잘 되네여 ~ ~ 델파이 초보라서 알고시픈건 많은데... 주변에 도와주는 사람은 없고 ㅠㅠ 여기와서 많은...
    • 김동광
    • 2002.07.16 01:21
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.16 02:27
      안녕하세요. 최용일입니다. 리스트같은 걸 써서 프로세스 리스트를 관리하시면 될거같은데요... Crea...
    • 김동광
      2002.07.16 03:25
      sub process는 코딩으로 CreateProcess함수로 만드는 것이 아니구요! CreateProcess함수에 의해 생성된 p...
    • 최용일
      2002.07.16 04:02
      전체 프로세스 리스트를 루프를 돌면서 갱신하면서 검색하시다가 원하시는 서브프로세스가 검색되어질때 그...
    • 최용일
      2002.07.16 00:45
      안녕하세요. 최용일입니다. FormatDateTime을 이용해보세요... var     MyDateTi...
    • * 아자!! *
      2002.07.16 02:06
      StrToDateTime(FormatDateTime('YYYY-MM-DD opensi + ":" +openbun', Now)); 이런식으로 하면 될것 같은데...
    • 최용일
      2002.07.16 02:22
      쩝~ StrToDateTime( FormatDateTime('YYYY-MM-DD ' + OpenSi + ':' + OpenBun + ':00', Now) ); ^^ ...
    • 김진만
    • 2002.07.15 22:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2002.07.16 05:42
      Stream 말고.. assign 이나 value를 사용해보심이..ㅡㅡ;
    • 휴초보
    • 2002.07.15 22:37
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.07.16 00:46
      안녕하세요. 최용일입니다. 자료실에 있는 G32컴포넌트를 써보세요... 레이어 기능 지원합니다. 거기...
    • 김진혁
      2002.07.16 01:28
      무식한 방법이지만...아주 쉬운 방법이 있습니다... 이미지 컴포넌트를 계속해서 씌우는 것이죠,... 이미...
    • 이지태
    • 2002.07.15 21:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 오정민
      2002.07.16 07:43
      property에서 WindowState 을 wsMaximized 로 하면 되지 않을까여... 오늘 하루도 즐거운 하루되세요.
    • 머슴
      2002.07.15 22:33
      스크린 상관없이 항상 일정한크기로 폼을 띄우는 방법입니다.. implementation const ScreenWidth:Lo...
    • 장태원
      2002.07.16 05:37
      혹시...윈도우계정을 상속시켜놨는지 궁금하군요. 예를 들어 서버에 administrator 만 허용시켰고. ...
    • 손동언
    • 2002.07.15 21:24
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      2002.07.15 22:38
      Delete라는 Method가 있습니다. 예를 들면 ListBox1.Items.Delete(지우고 싶은 아이템); 이라고 하면 ...
    • 블랙썬
      2002.07.15 21:33
      //선택된거만 삭제 ListBox1.DeleteSelected; //Listbox 아이템 인덱스로 삭제 ListBox1.Items.Dele...
    • 한원희
      2002.07.15 21:31
      마지막 줄을 삭제하시려면, ListBox1.Items.Delete(ListBox1.Items.Count-1); 이렇게 하시면 됩니다....
    • 머슴
      2002.07.15 22:27
      DLL의 폼을 생성할때 소유자를 nil로 하지마시고요.. Application으로 한번 해보세요...
    • 최용일
      2002.07.16 01:00
      안녕하세요. 최용일입니다. 스트링그리드의 OnKeyDown이벤트에서 아래와 같이 코딩해보세요... 참고...