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
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
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.
