Pegar um variável definida por outro EXE
Moderador: Moderadores
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Pegar um variável definida por outro EXE
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
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
xHarbour.org + Hwgui + PostgreSql
Re: Pegar um variável definida por outro EXE
Leonardo,
Se for executado em uma mesma máquina eu estudaria o uso de clipboard.
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)
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)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Pegar um variável definida por outro EXE
Puxaaaaaa, muito boa, alias ótima idéia. vou fazer isso agora, depois volto dizendo se deu certo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
Euclides
- 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
É 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
Eu estudaria um meio de utilizar arquivos .INI
... meus 1 cents...
T+, Euclides
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Pegar um variável definida por outro EXE
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.
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
xHarbour.org + Hwgui + PostgreSql
Re: Pegar um variável definida por outro EXE
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
Programa que recebe(Le)
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
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)
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)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Pegar um variável definida por outro EXE
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
xHarbour.org + Hwgui + PostgreSql
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Pegar um variável definida por outro EXE
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
cTextClip := GETCLIPBOARDTEXT() // pega da area de transferência
COPYSTRINGTOCLIPBOARD( cText ) // envia para a area de transferência
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Pegar um variável definida por outro EXE
Sygecom,
Muito bom, o exemplo será bastante apreciado pelos nossos colegas que estejam precisando de algo semelhante.
[]´s
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)
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)
- rochinha
- 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
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.
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Pegar um variável definida por outro EXE
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
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
xHarbour.org + Hwgui + PostgreSql
- clodoaldomonteiro
- 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
Olá amigos!
Tava pesquisando alguma coisa o assunto em questão e tenho tb uma dica, que é o uso dos arquivos .MEM
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:
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.
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
Você poderia guardar por exemplo:
Código: Selecionar todos
VarUsuario:='clodoaldo'
VarMaquina:='192.168.1.1'
VarNivel:='Administrador'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
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Pegar um variável definida por outro EXE
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.
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
xHarbour.org + Hwgui + PostgreSql
Re: Pegar um variável definida por outro EXE
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.
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!
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!
- clodoaldomonteiro
- 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
Malígno!
De acordo com a sua informação eu teria que usar alguma função para executar seu exemplo, mais ou menos assim:
... ou seria de outra forma?
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 somAt. 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
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br

