본문 바로가기
Delphi Tip/+Tip

외부 프로그램 실행하고 대기하기

by MonoSoft 2022. 2. 22.
728x90
반응형

외부 프로그램 실행하고 대기하기

= ShowModal과 비슷

 

외부 프로그램을 실행 후 실행한 프로그램이 종료될때까지 대기상태(루프)에 들어간다.

 

uses 

shellapi; 

 

{...} 

 

Procedure ShellExecute_AndWait(FileName:String;Params:String); 

var 

  exInfo : TShellExecuteInfo; 

  Ph : DWORD; 

begin 

  FillChar( exInfo, Sizeof(exInfo), 0 ); 

  with exInfo do 

  begin 

    cbSize:= Sizeof( exInfo ); 

 

    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; 

    Wnd := GetActiveWindow(); 

 

    ExInfo.lpVerb := 'open'; 

    ExInfo.lpParameters := PChar(Params); 

 

    lpFile:= PChar(FileName); 

    nShow := SW_SHOWNORMAL;  

  end; 

 

  if ShellExecuteEx(@exInfo) then 
  begin 
    Ph := exInfo.HProcess; 
  end 
  else 
  begin 
    ShowMessage(SysErrorMessage(GetLastError)); 
    exit; 
  end; 

 

  //무한대기
  while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do 
    Application.ProcessMessages; 

 

  CloseHandle(Ph); 
end; 

 

---------실행 예제 
procedure TForm1.Button1Click(Sender: TObject); 

begin 

  ShellExecute_AndWait('FileName','Parameter'); 

end; 

 

728x90
반응형

댓글