ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Usando SendMessage para mandar mensagem para outro exe?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Mai 24, 2022 11:36 am    Assunto: Usando SendMessage para mandar mensagem para outro exe? Responder com Citação

Preciso cada vez que um sistema meu executável entrar em um metodo dele, neste instante mandar uma mensagem para outro executavel que recebe o valor da mensagem.

Seria um tipo assim, em um executavel ele esta fazendo suas tarefas, e no que vai receber a mensagem é um tipo de monitor de erros, então quando entra na execução do erro ele dispara a mensagem do erro para que o outro sistema receba a mensagem.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Qui Mai 26, 2022 7:46 am    Assunto: Responder com Citação

Vc pode fazer isso usando o PostMessage, tem muito material por ai que funciona, mas vou ver aqui nos meus teste se encontro algo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Qui Mai 26, 2022 8:45 am    Assunto: Responder com Citação



Quem vai enviar:
Código:

var
  txt: string;
  I: Integer;
  Reciver,           
  Alvo: THandle;
begin

  txt := Edit1.Text + #13;

  Reciver:= FindWindow('TfrmReciver', nil);

  if Reciver> 0 then
  Alvo:= FindWindowEx(Reciver, 0, 'TMemo', nil);
    if Alvo> 0 then
  begin

    for I := 1 to Length(txt) do
      PostMessage(Alvo, WM_CHAR, Ord(txt[I]), 0);

  end;
end;



Neste exemplo não fiz nada em quem recebe, mas vc pode disparar um evento quando um objeto receber o texto enviado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Mai 26, 2022 9:31 am    Assunto: Responder com Citação

anderbelluno escreveu:


Quem vai enviar:
Código:

var
  txt: string;
  I: Integer;
  Reciver,           
  Alvo: THandle;
begin

  txt := Edit1.Text + #13;

  Reciver:= FindWindow('TfrmReciver', nil);

  if Reciver> 0 then
  Alvo:= FindWindowEx(Reciver, 0, 'TMemo', nil);
    if Alvo> 0 then
  begin

    for I := 1 to Length(txt) do
      PostMessage(Alvo, WM_CHAR, Ord(txt[I]), 0);

  end;
end;



Neste exemplo não fiz nada em quem recebe, mas vc pode disparar um evento quando um objeto receber o texto enviado.


Bom dia anderbelluno.

Deu certo aqui, muto obrigado pelo exemplo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Jun 17, 2022 11:10 am    Assunto: Responder com Citação

Tente WM_COPYDATA:

http://www.activedelphi.com.br/forum/viewtopic.php?t=76279&sid=a8a67b7dfe864838d95f5162d63d1e0d
http://www.activedelphi.com.br/forum/viewtopic.php?t=67481&sid=61f03011f243651abe4d61512d82cf13



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Qua Jun 29, 2022 11:32 pm    Assunto: Responder com Citação

Gostaria de comentar aqui que SendMessage não é destinado para comunicação entre processos, e sim para troca de mensagens entre janelas. É uma "pequena grande" diferença rs... Não dá pra usar SendMessage na troca de mensagens em programas sem interface gráfica. Além disso, você delega uma tarefa de comunicação à sua interface, o que é uma tremenda de uma gambiarra. O sistema operacional fica enviando mensagens de controle às janelas, por esse mesmo canal, o tempo todo. Dependendo do que esteja sendo processado no momento a mensagem pode demorar a chegar, ou se sua mensagem demorar a ser processada, pode prejudicar o controle do sistema operacional sobre sua aplicação.

Para troca de mensagens entre processos, já usei um Named Pipe (https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipes), que atendeu muito bem. Pesquise sobre IPC e encontre outros métodos de troca de mensagens mais adequados.
_________________
"Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jul 25, 2022 5:06 pm    Assunto: Responder com Citação

marcieldeg escreveu:
Gostaria de comentar aqui que SendMessage não é destinado para comunicação entre processos, e sim para troca de mensagens entre janelas. É uma "pequena grande" diferença rs... Não dá pra usar SendMessage na troca de mensagens em programas sem interface gráfica. Além disso, você delega uma tarefa de comunicação à sua interface, o que é uma tremenda de uma gambiarra. O sistema operacional fica enviando mensagens de controle às janelas, por esse mesmo canal, o tempo todo. Dependendo do que esteja sendo processado no momento a mensagem pode demorar a chegar, ou se sua mensagem demorar a ser processada, pode prejudicar o controle do sistema operacional sobre sua aplicação.

Para troca de mensagens entre processos, já usei um Named Pipe (https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipes), que atendeu muito bem. Pesquise sobre IPC e encontre outros métodos de troca de mensagens mais adequados.
Boa tarde.. Blz vou dar uma olhada. Obrigado
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB