Verificação se programa está em execução via delphi

Atualizado em: 26/05/2023

Para verificar se um processo está em execução no Windows via Delphi, pode usar a função abaixo, você só precisa ter o nome do arquivo do programa que quer verificar, exemplo “notepad.exe” (bloco de notas do windows), segue o código:

uses TlHelp32;

function processExists(exeFileName: string): Boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := False;
  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
    begin
      Result := True;
    end;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

 

Para usar essa função é simples:

procedure VerificaSeEsseProgramaEstaRodando;
begin
	if processExists(ExtractFilePath(Application.ExeName)) then
		ShowMessage('Está rodando')
	else
		ShowMessage('Não está rodando');
end;

 

Categorias