[DELPHI] FINALIZAR PROCESSO PELO NOME DO EXECUTÁVEL

procedure TForm1.Button1Click(Sender: TObject); 
var
  processo: string;
begin
  InputQuery('Finalizar Processo', 'Informe o nome do processo a ser finalizado, Ex.: notepad.exe', processo);
  if processo <> '' then
  begin
    if not(KillProcess(processo) > 0) then
      ShowMessage('Processo não finalizado.')
    else
      ShowMessage('Processo finalizado com sucesso!.');
  end;
end;

/// finalizar processo
function TfrmWindows.KillProcess(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;

Gostou? Deixe seu comentário... Convido você a seguir meu blog, sua presença é bem vinda!【ツ】

Nenhum comentário:

Postar um comentário