quinta-feira, 6 de setembro de 2012

Finalizar Processo do Windows [Delphi]


Fechando um Processo do windows

declare a função KillTask ->

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;

Exemplo:

begin
   KillTask('calc.exe');
end;

Nesse exemplo ele iria fechar a calculadora, calc.exe é o nome do processo da calculadora.

3 comentários:

  1. Bom dia.. viu me diz uma coisa.. essa função irá fechar todos os processos do windows do servidor..
    como fazer pra fechar somente o do usuário do windows que esta logado no momento ??

    ResponderExcluir
  2. Obrigado!!
    Só faltou informar que precisa add TLHelp32 em uses.

    ResponderExcluir