Pegar um variável definida por outro EXE

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Pegar um variável definida por outro EXE

Mensagem por sygecom »

Buenas Pessoal,
Será que alguém sabe se tem como pegar uma variável definida por outro EXE ?
Explico melhor, tenho um EXE compilado com Harbour( por que apenas com harbour consigo me comunicar com portas seriais através do RDP) que faz comunicação serial com balanças eletrônicas e uso troca de arquivos TXT para me comunicar com meu EXE Principal que é compilado com xHarbour(por causa do SQLRDD) então eu estava procurando alguma solução para deixar de usar essas trocas de arquivos TXT, será que existe alguma maneira de definir uma variável em um EXE meu que possa enxergar no meu outro EXE.

Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Pegar um variável definida por outro EXE

Mensagem por asimoes »

Leonardo,

Se for executado em uma mesma máquina eu estudaria o uso de clipboard.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por sygecom »

Puxaaaaaa, muito boa, alias ótima idéia. vou fazer isso agora, depois volto dizendo se deu certo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Euclides
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 12 Mai 2007 14:07
Localização: São Paulo, Capital

Re: Pegar um variável definida por outro EXE

Mensagem por Euclides »

É Leonardo, o clipboard pode ser uma boa ideia, mas tem que ser ligeiro... porque se o operador ´fizer´um Ctrl-C...
Eu estudaria um meio de utilizar arquivos .INI
... meus 1 cents...
T+, Euclides
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por sygecom »

Olá Euclides,
Agradeço a dica, mas INI seria a mesma coisa que já uso hoje com arquivo TXT, eu estava mesmo querendo deixar de usar esse modo TXT, mas mesmo assim agradeço.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Pegar um variável definida por outro EXE

Mensagem por asimoes »

Olá Leonardo,

Fiz o teste com estes 2 programas e funcionou o primeiro faz o clipboard da hora e o segundo pega o conteúdo do clipboard
Você pode fazer um controle com tags no programa que envia e recebe do clipboard para ter certeza do dado que você deseja receber.
Programa que envia

Código: Selecionar todos

#include "hbgtinfo.ch"
FUNCTION Main
   CLS
   K:=0
   for i:=1 to 60     
      Hb_GtInfo( HB_GTI_CLIPBOARDDATA, '['+Time()+']' )
      inkey(1)
   next
RETURN
Programa que recebe(Le)

Código: Selecionar todos

#include "hbgtinfo.ch"
FUNCTION Main
   CLS
   K:=0
   DO WHILE K<>27
      cClip:=Hb_GtInfo( HB_GTI_CLIPBOARDDATA )
      IF LEFT(cClip,1) == '[' .AND. RIGHT(cClip,1)==']'
         @10,00 SAY cClip
      ENDIF
      K:=INKEY(0.5)
   ENDDO
RETURN
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por sygecom »

Testei em modo console e deu certo, mas quando coloco a Hwgui junto não retorna, alias nem preenche e nem retorna, vou ver o que pode está acontecendo, vlw pela dica.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por sygecom »

Asimões com essa sua LUZ que foi mais um OLOFOTE consegui resolver o dilema, e com mais a LUZ da dica abaixo do Basso, tudo saiu perfeito como deveria ficar, muitoooooooo obrigado e se eu poder ajudar em algo é só prender o grito.

cTextClip := GETCLIPBOARDTEXT() // pega da area de transferência

COPYSTRINGTOCLIPBOARD( cText ) // envia para a area de transferência
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Pegar um variável definida por outro EXE

Mensagem por asimoes »

Sygecom,

Muito bom, o exemplo será bastante apreciado pelos nossos colegas que estejam precisando de algo semelhante.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por rochinha »

Amiguinho,

Voce usa aplicativos em 32bits, não seria ideal, voce usar outro método de comunicação como o DDE.

Se voce ainda tem o Fivewin, de uma olhada nos exemplos dele e porte para a GUI que voce esta usando.

Voce pode usar o DDE normal ou DDE de Rede onde a diferença é como voce chama(por nomes) a parte cliente e a parte servidor.

Ou talvez uma comunicação por sockets onde voce pode enviar uma string de dados e do outro lado obter e interpretá-las.
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.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por sygecom »

Buenas Rocnhinha,
Eu até dei uma olhada no DDE no WIKI da Fivewin, porem meu aplicativo não usa Fivewin e sim Hwgui, mas agradeço sua dica, e vou guardar aqui para caso eu precise de algo mais complexo acho que vale a pena dar uma estudada em DDE e Sockets.
Links abaixo do DDE
http://wiki.fivetechsoft.com/doku.php?i ... que_es_dde
http://wiki.fivetechsoft.com/doku.php?i ... anejar_dde
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por clodoaldomonteiro »

Olá amigos!
Tava pesquisando alguma coisa o assunto em questão e tenho tb uma dica, que é o uso dos arquivos .MEM

Código: Selecionar todos

SAVE TO (ArquivoMEM) ALL LIKE drv*   // grava configuracoes,
REST FROM (ArquivoMEM) ADDI                // restaura configuracoes gravadas
A vantagem é que podemos guardar várias Variáveis de Memória, entre strings, numerics, logics, etc., e se o Ctrl+C for pressionado no meio do caminho, não atrapalhará as variáveis.
Você poderia guardar por exemplo:

Código: Selecionar todos

VarUsuario:='clodoaldo'
VarMaquina:='192.168.1.1'
VarNivel:='Administrador'
A desvantagem é que o comando SAVE limita em guardar apenas 10 caracters do nome de suas variáveis, ou seja, se vc tiver usando uma variável com o nome MinhaVariavel ele gardará MinhaVaria, ainda não corrigiram isso no xHarbour.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por sygecom »

Olá Clodoaldo,
Isso para mim seria quase que a mesma coisa que gravar em um TXT ou INI, meu problema em usar desse modo seria o local onde ficaria esses arquivos, no meu caso onde está um EXE é na maquina local que acessou o TS e outro dentro do TS, e acabariam não se enxergando os MEM um pelo outro, a não ser que eu configure cada maquina de cada cliente meu que se tornaria inviável, no modo de usar a AREA DE TRANSFERENCIA ficou bem pratico e rápido, e para o usuário dar um CTRL+C eu resolvi travando o teclado em um EXE e libero pelo outro EXE e mesmo assim isso acho que nem era necessário por que leva 300 milésimos de segundos entre copiar e colar, é muito rápido, são apenas 7byts que vão para a memória.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Pegar um variável definida por outro EXE

Mensagem por Maligno »

Uma forma alternativa de trocar informações entre janelas é justamente a forma mais natural de comunicação no Windows. Este SO é totalmente orientado a mensagens e pode-se trocar mensagens entre as janelas usando a faixa de códigos existente para usuários. Eu uso MDI no Windows e controlo janelas por esse modo, que foi feito exatamente para isso. Se interessar, pesquise no MSDN por PostMessage(), SendMessage(), etc.

Ademais, acho que, apesar de ser válido e funcionar relativamente bem, o Clipboard não foi feito pra troca de informações entre aplicações. Acho que o melhor é utilizar a ferramenta mais apropriada.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Pegar um variável definida por outro EXE

Mensagem por clodoaldomonteiro »

Malígno!

De acordo com a sua informação eu teria que usar alguma função para executar seu exemplo, mais ou menos assim:

Código: Selecionar todos

DLLCall("WINMM.DLL",32,"sndPlaySoundA", "c:\windows\media\Windows Shutdown.wav", 0 ) //chama fun‡Æo dentro de uma dll, para rodar som
... ou seria de outra forma?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Responder