다른 프로세스의 실행 상태를 확인해야 할 경우가 있습니다.
간혹 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 ) 가 반환되게 됩니다.
그 특성을 통해
프로세스가 실행중인지의 여부를 주기적으로 시그널 상태를 확인하여 체크할 수 있습니다.
'Programming > *Delphi' 카테고리의 다른 글
ListView SubItem 을 Combobox를 이용하여 수정하기. (0) | 2020.08.06 |
---|---|
내 프로세스가 실행된 경로 구하기 (0) | 2020.07.09 |
문자열 파싱 함수 (Pos / Copy 를 이용) (0) | 2018.06.18 |
단방향 해쉬 함수 ( SHA256 / Hash 내장 모듈 사용) (0) | 2018.06.18 |
댓글