본문 바로가기
Programming/*Delphi

프로세스가 실행 중인지 확인하기.

by Aur0ra 2020. 7. 9.

다른 프로세스의 실행 상태를 확인해야 할 경우가 있습니다.

 

간혹 IPC 를 사용하거나 

자신의 프로젝트가 아닌 다른 프로세스의 상태를 확인 할 경우가 있습니다.

(저는 종종 있었네요 .)

 

 

그 경우 프로세스의 실행 상태를 확인할 때 사용하는 방법입니다.

 

 

Function CheckProcess(ProcessID : DWORD):Boolean;

var

 processhandle : DWORD;

begin

 result := False;

 

 processshandle := OpenProcess(MAXIMUM_ALLOWED),False,ProcessID);

 

  if Processhandle = 0 then result := False

  else

  begin   

    if WaitForSingleObject(ProcessHandle,0) = WAIT_TIMEOUT then result := True

    else result := False;

  end;

 

end;

 

실행중인 프로세스에 WaitForSingleObject 함수를 통해 커널오브젝트의 상태를 확인해보면,

종료되거나 특정 시그널을 보내지않아 WAIT_TIMEOUT ( $00000102 ) 가 반환되게 됩니다.

 

그 특성을 통해 

프로세스가 실행중인지의 여부를 주기적으로 시그널 상태를 확인하여 체크할 수 있습니다.

댓글