|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Mai 24, 2022 11:36 am Assunto: Usando SendMessage para mandar mensagem para outro exe? |
|
|
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 |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qui Mai 26, 2022 7:46 am Assunto: |
|
|
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 |
|
|
anderbelluno Colaborador
Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qui Mai 26, 2022 8:45 am Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Mai 26, 2022 9:31 am Assunto: |
|
|
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 |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
Voltar ao Topo |
|
|
marcieldeg Colaborador
Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Qua Jun 29, 2022 11:32 pm Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Jul 25, 2022 5:06 pm Assunto: |
|
|
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 |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|