| Você está aqui: Delphi ::: Win32 API (Windows API) ::: Processos | 
| Como usar o Delphi para testar se um determinado processo do Windows está sendo executadoQuantidade de visualizações: 19990 vezes | 
| Em algumas situações precisamos verificar se um determinado processo está sendo executado, ou seja, gostaríamos de saber se o executável "programa.exe" está carregado na memória e efetuar alguma tarefa se o teste resultar satisfatório. Nesta dica eu mostro como isso pode ser feito. O primeiro passo é acrescentar a unit TlHelp32 na cláusula uses do seu formulário. Esta unit contém algumas funções, tipos e definições úteis para se trabalhar com processos acessando a API do Windows. Uma vez importada a unit TlHelp32, coloque a função abaixo na seção implementation de seu formulário: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// função personalizada que permite verificar se um determinado
// processo está sendo executado
function isProcessRunning(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;
Agora, para testar a função, coloque o código abaixo no evento Click de um botão: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
procedure TForm3.Button1Click(Sender: TObject);
begin
  if isProcessRunning('notepad.exe') then
    ShowMessage('O processo está sendo executado')
  else
    ShowMessage('O processo NÃO está sendo executado');
end;
Aqui nós estamos testando se o processo "notepad.exe" está sendo executado. Uma melhoria neste código seria listar todos os processos em execução ou listar as cópias em execução de um mesmo processo. | 
|  Link para compartilhar na Internet ou com seus amigos: | 
| Desafios, Exercícios e Algoritmos Resolvidos de Delphi | 
| Veja mais Dicas e truques de Delphi | 
| Dicas e truques de outras linguagens | 
| E-Books em PDF | ||||
| 
 | ||||
| 
 | ||||
| Linguagens Mais Populares | ||||
| 
			   1º lugar: Java | 


 
 




