이번 포스팅에서는 프로세스를 강제종료하는방법을 배워보도록 할게요.
우선 프로세스이름을 알아야겠죠?
Project1.exe 이라는 프로세스를 강제로 종료해보려고해요.
우선 종료할 프로세스의 pid 프로세스아이디를 알아야하는데요.
프로세스 아이디를 변수에 먼저 저장을 해줘야합니다.
GetProcessID 를 이용하여 pid 를 가져올게요.
예제는 아래와 같습니다.
function GetProcessID(Process: String): Cardinal;
const PROCESS_TERMINATE=$0001;
var ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result:=0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(Process))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(Process))) then
begin
Result := FProcessEntry32.th32ProcessID;;
exit;
end
else begin
Result:=0;
end;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
이렇게 function 을 지정해주고,
var
ProcessID : cardinal;
begin
ProcessID := GetProcessID('Project1.exe');
end;
이렇게 하면 ProcessID 에 Project1.exe 의 pid 가 담기게 됩니다.
그럼 이제 구한 pid 값을 이용해서 프로세스를 종료해볼게요.
function kill_Process(pid: string): string;
var
killer: THandle;
code: string;
begin
code := '';
killer := OpenProcess(PROCESS_TERMINATE, FALSE, StrToInt(pid));
if TerminateProcess(killer, 0) then
begin
code := '[+] Kill Process : OK';
end
else
begin
code := '[-] Kill Process : ERROR';
end;
end;
kill_Process function 을 지정해주고
위에 코드에 합쳐서 사용하면~
var
ProcessID : cardinal;
begin
ProcessID := GetProcessID('Project1.exe');
kill_Process(inttostr(ProcessID));
end;
간단하죠?
위의 inttostr 은 int 값을 string 으로 변환해주는거에요.
kill_process 에 pid 는 string 으로 받아오도록 선언이 되어있기 때문이죠.
버튼이나 타이머에 넣어서 실행하면 Project1.exe 는 종료됩니다
이렇게 kill_Process을 사용하여 프로세스를 종료하는방법을 알아봤습니다.
모르시는부분이 있다면 댓글 남겨주시면 친절하게 답변 드리겠습니다~
감사합니다~
'개발노트 > Delphi' 카테고리의 다른 글
[Delphi/초급] ShellExecute 를 사용하여 프로그램 실행하는방법 (0) | 2020.10.14 |
---|---|
[Delphi/초급] 델파이에서 Split 를 사용하여 내용 자르기 (0) | 2020.10.12 |
[Delphi/초급] 작업표시줄에 서브폼도 나타내기 (0) | 2020.10.12 |