CODIGO: Comunicacao entre aplicativos.

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

CODIGO: Comunicacao entre aplicativos.

Mensagem por rochinha »

Amiguinhos,

Este exemplo está em minha lista de à fazer a tempos.

Trata-se de uma .OCX que permite que dois aplicativos se comuniquem enviando dados um para o outro.

Neste exemplo o aplicativo servidor fica verificando de tempos em tempos por alguma mensagem enviada pelo aplicativo cliente.

Fiz o uso de Fivewin e pelo fato de acessar a .OCX via OLE ficará simples para qualquer um implementar usando o Harbour mais saboroso.


Exemplo do host:

Código: Selecionar todos

#include "FiveWin.ch"

function Main()
   local oWnd, oTimer

   DEFINE WINDOW oWnd TITLE "FiveWin OLE Support"

   XComm := TOleAuto():New( "XComm.MainClass" )
   XComm:Start("Programa1")

   DEFINE TIMER oTimer OF oWnd INTERVAL 6000 ACTION MsgRun( XComm:Received() )
   ACTIVATE TIMER oTimer

   ACTIVATE WINDOW oWnd

   return nil
Vejam que iniciei o objeto:

XComm := TOleAuto():New( "XComm.MainClass" )

Após iniciei o serviço e dei-lhe um nome:

XComm:Start("Programa1")

Este nome sera a referencia para o aplicativo cliente.

Exemplo do cliente:

Código: Selecionar todos

#include "FiveWin.ch"

function Main(oque)
   local oWnd, aMessages := {}
   default oque := "teste"
   XComm := TOleAuto():New( "XComm.MainClass" )
   if XComm:Connect("Programa1")
      XComm:Send( oque )
   else
      ? "Não foi possível estabelecer uma conexão!"
   endif
   return nil
Neste exemplo criei o objeto:

XComm := TOleAuto():New( "XComm.MainClass" )

Critiquei a conexão com o serviço de nome Programa1:

if XComm:Connect("Programa1")

Após fiz envio de uma string para o mesmo:

XComm:Send( oque )

Pelo que parece o esquema usado para comunicação é o antigo DDE.

O funcionamento acontece somente em modo mono, ou seja, nao acontece em rede, nem via IP, etc. Os dois programas devem estar na mesma maquina.

Depedendo do uso que se queira fazer, talvez encontremos utilidade para ele.

XComm.rar

Para usar os exemplos é necessário registrar a .OCX em seu S.O., portanto usem o registrar.reg para criar os comandos de registro/un-registro de .DLL/.OCX no menu de contexto. Aí bastará clicar com botão direito sobre a .DLL/.OCX e escolher registrar/un-registrar.

O desenvolvedor original não disponibiliza mais o mesmo no site.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder