본문 바로가기
Delphi Tip/+Tip

실행파일명으로 프로세스(TASK) 죽이기

by MonoSoft 2022. 3. 31.
728x90
반응형

실행파일명으로 프로세스(TASK) 죽이기

 

function KillTask(ExeFileName: string): Integer;

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(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =

      UpperCase(ExeFileName))) then

      Result := Integer(TerminateProcess(

        OpenProcess(PROCESS_TERMINATE,

        BOOL(0),

        FProcessEntry32.th32ProcessID),  0));

 

    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);

  end;

 

  CloseHandle(FSnapshotHandle);

end;

 

function isOpen(ExeFileName: string): integer;
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(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
    begin
      result := FProcessEntry32.th32ProcessID;
      break;
    end;

    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

728x90
반응형

댓글