Fórum Interação entre aplicações #496035
30/09/2014
0
Preciso abrir um form de uma aplicação, então passo o nome desse forma via parametro: diretorio\nome_exe.exe PARMETRO.
Se a aplicação não estiver em execução é aberto um processo para a execução deste form normalmente, porém, a minha questão é que preciso que seja verificado se este exe já estiver aberto, apenas interaja com esta aplicação e chame o form que eu passei no parametro.
O principal objetivo é que não fique dois processos da mesma aplicação em execução simultaneamente.
Segue um algoritimo de exemplo.
se aplicacao.exe estiver em execucao entao
inicio
abre form(passado por parametro) dentro desse exe;
encerre o processo usado para interacao (nao pode ficar dois processos do mesmo exe);
fim
se nao
inicio
apenas execute form_principal
fim
Já tenho uma função para verificar se está em execução, so preciso saber como fazer a interação entre as aplicações.
Alguém me ajuda nesse desafio?
Huelbert Oliveira
Curtir tópico
+ 0Posts
30/09/2014
Claudio Ferreira
Cria um mutex e testa na entrada se estiver marcado, a 2a. instância apenas envia a instrução de abertura do form e sai
http://delphi.about.com/od/windowsshellapi/l/aa100703b.htm
Para envio da instrução de abertura do form :
Envie uma mensagem do Windows personalizada para a aplicação que está rodando (será necessário obter o handle dela)
http://www.cryer.co.uk/brian/delphi/howto_send_custom_window_message.htm
Para que a instância rodando receba o comando de qual form abrir :
Coloque o componente ApplicationEvents no form principal e escreva o evento OnMessage, neste evento voce abrirá o form se caso receber uma mensagem personalizada da outra instância
Gostei + 0
30/09/2014
Joel Rodrigues
Gostei + 0
30/09/2014
Huelbert Oliveira
Claudio, quanto a troca de mensagens, ficou meio confuso pra mim a questão de como enviar usando PostMessage e tratar isso no OnMessage do TApplicationEvents.
Tem algum exemplo mais claro sobre essas etapas?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)