본문 바로가기

운동하는 개발자/Delphi

델파이 프로세스 실행 + 종료 기다리기 / Delphi Create Process and wait for close process

728x90

델파이에서 외부 프로그램을 실행시키고 그 프로그램이 종료대기까지 기다려야 하는 경우 사용법
(예: github에서 그렇듯 commit메세지를 입력받기 위해 메모장을 띄우고 해당 메모장 프로그램이 종료되길 기다리는 경우)

string lExePath //프로그램 풀 경로 c:\work\notepad.exe

lExePath := Trim(lExePath);  //정확한 이유는 모르겠지만 공백이 없더라도 이 작업이 필수
if CreateProcess(nil, PWideChar(lExePath), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then
begin
	//정상적으로 실행했을경우
	with ProcessInfo do
    begin
    	WaitForSingleObject(hProcess, INFINITE); //두번째 파라미터값으로 ms단위 타임아웃대기시간 조절가능
    end;
end
else
  //실행 실패

 

*참조 

CreateProcess함수 호출시 위와같은 에러가 발생한다면 lExePath := Trim(lExePath); 이 코드를 꼭 동작시켜보길 바란다 추가로 string을 array [0..1023] of WideChar; 이런식으로 변환하여 넣어주어도 정상적으로 작동된다


 

728x90