Verificar se aplicação está sendo executada.

Delphi

07/01/2009

Pessoal, alguem sabe como faço para verificar se uma aplicação está sendo executada através de seu processo?

Obrigado


Edusjc

Edusjc

Curtidas 0

Respostas

Edjlle

Edjlle

07/01/2009

Se for para encontrar um executável rodando:

var
  hHandle: THandle;
  sExename: string;
begin
  // Supondo que o nome do main form seja Form1
  hHandle := FindWindow(´TForm1´, nil); 
  if hHandle = 0 then
  begin  
    // Teste.exe é o nome do executável            
    sExename := ExtractFilePath(Application.ExeName)+´Teste.exe´;
  end
  else
  begin
      // Executa o programa - se estiver no drive C
      if ShellExecute(Handle, PChar(´open´), PChar(sExename),
                    0, PChar(´C:\´), SW_SHOWMINNOACTIVE) <= 32 then
      ShowMessage(´Executável não encontrado´);



GOSTEI 0
Edjlle

Edjlle

07/01/2009

Cara, não tem nada a ver o código que eu escrevi aí, desculpe-me,
o código certo é:

var
  hHandle: THandle;
  sExename: string;
begin
  // Supondo que o nome da classe do main form seja TForm1
  hHandle := FindWindow(´TForm1´, nil);
  if hHandle <> 0 then
  begin
    ShowMessage(´Executável já rodando.´);
  end
  else
  begin
      // Executa o programa (chamado Teste.exe) - do diretório desta aplicação
      sExename := ExtractFilePath(Application.ExeName)+´Teste.exe´;
      if ShellExecute(self.Handle, PChar(´open´), PChar(sExename),
                    0, PChar(´C:\´), SW_NORMAL) <= 32 then
      ShowMessage(´Executável não encontrado´);
   end;
end;



GOSTEI 0
Edusjc

Edusjc

07/01/2009

Mas nesse caso ele vai verificar se tem alguma janela com um determinado caption certo? Não existe algum modo que ele verifica o exe dele no processo do task manager? Pois a minha aplicação deve ficar em um looping e só continuar depois que fechar esse executável que desejo verificar, e ele altera o titulo da janela várias vezes.

Obrigado


GOSTEI 0
Edjlle

Edjlle

07/01/2009

Veja o link, tem um exemplo:
http://www.activedelphi.com.br/modules.php?op=modload&name=Downloads&file=index&req=viewdownloaddetails&lid=527&ttitle=Finaliza_Processos

Você precisará estar logado para baixar.


GOSTEI 0
POSTAR