verificar se um exe está rodando e como trazer p/ frente?

Delphi

06/07/2004

Como faço para colocar um determinado executável para frente?
Tenho um .exe que chama um outro .exe, sem usar <ALT> + <TAB> como faço para que no click ou em outro evento qualquer um determinado executável seja trazido para frente???

e outra, como faço para verificar se um determinado programa está aberto??


Rdf

Rdf

Curtidas 1

Melhor post

Paullsoftware

Paullsoftware

05/01/2005

eu tenho a solução amanhã eu posto aqui pra vc´s!

valeu
[/code]


GOSTEI 1

Mais Respostas

Rdf

Rdf

06/07/2004

Colegas,
vasculhado o próprio fórum do clube delphi, encontrei muitas possibilidades de verificar se uma aplicação encontra-se em execução.
E para completar minha segunda resposta procurei no site do msdn, onde encontrei uma API para ´jogar´ a aplicação para frente. A seguir a solução encontrada:

procedure verifica;
var
  nHandle: HWnd;
begin
  nHandle := FindWindow(nil, ´titulo programa´);

  if nHandle <> 0 then
    BringWindowToTop(nHandle); // traz para frente
end;


Isso funciona bem, porém se a aplicação que deve ser exibida em primeiro plano estiver minimizada, o foco é setado nela, contudo ela não é maximizada, ficando esta ativa na barra de programas!!!

Tentei usar uma chamada a função ´SendMessage()´ passando ´ws_maximize´, porém não estou conseguindo capturar essa mensagem na aplicação destino!!

Resumindo: Gostaria de saber como faço para capturar mensagens enviadas através de algum procedimento/função do windows???

Desde já agradeço!!


GOSTEI 0
Mordred

Mordred

06/07/2004

Olha, encontrei esta API em outro tópico aqui do fórum. Ela realmente traz a janela para frente ao invés de fazer o botão da aplicação piscar na barra de tarefas MAS não joga o foco para a janela.
SetWindowPos(Hwnd,Hwnd_TopMost,0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE);


Eu, por exemplo, tenho uma aplicação Ponto de Funcionário que recebe o código do funcionário em uma edit e às vezes o sistema aparenta perder o foco da edit. Pus o código dessa API em um timer para trazer a janela para a frente seguido de um Edit.SetFocus. A tela aparece com o cursor piscando bonitinho dentro da edit, MAS, se você tentar digitar, espantosamente nada acontece. Pode usar o comando que quiser pra tentar trazer a janela para frente, se vc não der um clique na janela, não funciona.

Será que alguém conhece alguma solução para esse problemão?


GOSTEI 1
Adalberto

Adalberto

06/07/2004

Tente fazer o seguinte:

No lugar da constante SWP_NOACTIVATE (que indica que a janela não deve ter o foco), coloque a constante SWP_SHOWWINDOW).

Acho que deverá funcionar...

Blz ?


GOSTEI 1
POSTAR