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

델파이 Q&A
Delphi Programming Q&A
[3632] [해결] WinExec 실행완료 확인법 ...
김은필 [ ] 1578 읽음    1998-07-13 09:40
다음의 함수를 써보심이 어떠신지요.
WinExec 함수는 외부 프로그램을 실행하고 그 프로그램이 끝날때까지
기다리지 않는 것으로 알고 있습니다.
인터넷 어디선가 기다리도록 하는 것을 본 것 같은데 기억이 나지 않는군요
대부분 Win95 환경에서는 CreateProcess 함수를 써서
구현을 합니다. 다음 함수를 참고해 주세요.

// 인수로 전달된 화일을 실행하고 끝날때까지 기다린다.
function AsyncShell(FilePath, CmdLine:string) : Boolean;
var
  StartInfo    : TStartupInfo;
  ProcessInfo  : TProcessInformation;
  bCreatedOk   : Boolean;
  IsTerminated : Integer;
begin
  FillChar( StartInfo, Sizeof(TStartupInfo), #0);
  FillChar( ProcessInfo, Sizeof(TProcessInformation), #0);

  StartInfo.cb := sizeof(StartInfo);
  StartInfo.dwFlags := STARTF_USESTDHANDLES + STARTF_FORCEONFEEDBACK;

  // 매개변수가 있을 경우와 없을 경우를 달리호출한다.
  if CmdLine <> '' then
    bCreatedOk := CreateProcess(PChar(FilePath), PChar(CmdLine),
                                nil, nil, false,
                                DETACHED_PROCESS + HIGH_PRIORITY_CLASS,
                                nil, nil, StartInfo, ProcessInfo )
  else
    bCreatedOk := CreateProcess(nil, PChar(FilePath),
                                nil, nil, false,
                                DETACHED_PROCESS + HIGH_PRIORITY_CLASS,
                                nil, nil, StartInfo, ProcessInfo );
  if bCreatedOk then begin
    while True do begin
      GetExitCodeProcess(ProcessInfo.hProcess, IsTerminated);
      if (IsTerminated = 0) or (IsTerminated = 1) then Break;
      Application.ProcessMessages;
    end;
  end;
  CloseHandle(ProcessInfo.hProcess);

  Result := True;
end;



+ -

관련 글 리스트
3632 [해결] WinExec 실행완료 확인법 ... 김은필 1578 1998/07/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.