api do windows

17/01/2006

amigos, alguem saberia me dizer que funcoes da api do windows, ou do proprio delphi, serviriam para o proposito de jogar uma string de um edit, ou no banco de dados, para a memoria do computador ...
e depois uma funcao que conseguisse ler essa string da memoria e colar em um edit de outra aplicacao???

seria possivel fazer isso? como??

se alguem tiver algum material sobre a api do windows por favor me de um toque onde posso conseguir

abraços!!!!!!!!!!!!!!!


Rafael Gomes

Respostas

17/01/2006

Edilcimar

já tentou jogar para a área de transferência?


Responder Citar

17/01/2006

Adriano Santos

Você pode usar o ClipBoard do próprio Windows através de chamadas as funções no Delphi.

Declare a unit ClipBrd;

Para copiar para a memória

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.CopyToClipboard;
end;


Para colar
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit2.PasteFromClipboard;
end;



Responder Citar

17/01/2006

Rafael Gomes

[quote:becf2ac93e=´Adriano Santos´]Você pode usar o ClipBoard do próprio Windows através de chamadas as funções no Delphi.

Declare a unit ClipBrd;

Para copiar para a memória

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.CopyToClipboard;
end;


Para colar
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit2.PasteFromClipboard;
end;
[/quote:becf2ac93e]

o problema amigo é que quero copiar de uma aplicacao para outra, nao na mesma aplicacao ...

se puder ajudar eu agradeço!!

abraços!!!


Responder Citar

17/01/2006

Adriano Santos

De uma aplicação pra outra?
Ai só usando banco de dados cara. Se você usar o msm banco de dados nos dois softwares vc nem vai precisar copiar nada para memoria.

Agora, explique mais detalhadamente o que quer....acho que não é tão difícil assim


Responder Citar

17/01/2006

Rafael Gomes

sei que parece estanho essa necessidade .. mas preciso me comunicar com uma aplicacao que nao possui banco de dados ...

estou desenvolvendo uma aplicacao relacionada com a parte de exportacao ...

depois de efetuados todos os cadastros seria desejavel que eu conseguisse colar alguns dados em edits de uma outra aplicacao ...
o problema é como alternar o controle das aplicacoes, e como vou mandar os dados para a segunda aplicacao ...

é mais ou menos isso ... se precisar, posso dar mais detalhes ...

[]sss


Responder Citar

17/01/2006

Adriano Santos

[quote:21dc3752b1=´Rafael Gomes´]sei que parece estanho essa necessidade .. mas preciso me comunicar com uma aplicacao que nao possui banco de dados ...

estou desenvolvendo uma aplicacao relacionada com a parte de exportacao ...

depois de efetuados todos os cadastros seria desejavel que eu conseguisse colar alguns dados em edits de uma outra aplicacao ...
o problema é como alternar o controle das aplicacoes, e como vou mandar os dados para a segunda aplicacao ...

é mais ou menos isso ... se precisar, posso dar mais detalhes ...

[]sss[/quote:21dc3752b1]

Cara, vou pesquisar.
Eu tenho um exemplo aqui para escrever dentro do bloco de notas, se quiser o esquema é o seguinte:

procedure TForm1.Button1Click(Sender: TObject);
var
  wnd : HWND;
  i : Integer;
  s : string;
begin
  wnd := FindWindow(´notepad´,nil);
  if wnd <> 0 then
  begin
    wnd := FindWindowEx(wnd,0,´Edit´,nil);

    s := ´Seu Texto para ser escrito no bloco de notas :))´;
    For i := 1 to Length(s) do
    SendMessage(wnd, WM_CHAR, Word(s[i&93;), 0);
    PostMessage(wnd, WM_KEYDOWN , VK_RETURN, 0); {Simular o enter}
    PostMessage(wnd, WM_KEYDOWN , VK_SPACE, 0);  {Simular o Espaço}
  end;
end;



Talvez o melhor seja usar sockets.


Responder Citar

17/01/2006

Rafael Gomes

sockets?? poderia me falar mais sobre isso???

interessante o codigo abaixo, depois vou testar ...
se voce conseguir alguma coisa em sua pesquisa ou souber de algum material para baixar, ou site ... poste aqui ... ficarei muito grato!!

grande abraço!!!! :D


Responder Citar

17/01/2006

Rafael Gomes

só para complementar ...

wnd := FindWindow(´notepad´,nil);


esta funcao acha a janela pelo nome?? pelo titulo?? pelo nome do processo???


wnd := FindWindowEx(wnd,0,´Edit´,nil);

nao entendi o terceiro parametro, o que esse parametro tem a ver com a janela do notepad??

[]ss


Responder Citar

17/01/2006

Adriano Santos

wnd := FindWindow(´notepad´,nil);


Pela classe da janela.

wnd := FindWindowEx(wnd,0,´Edit´,nil);

Aqui ele procura o controle dentro da janela notepad, no caso pela classe Edit


Responder Citar

17/01/2006

Rafael Gomes

vixe amigo, entao complicou mais ainda ...
o programa que preciso colar as informacoes é um emulador de terminais chamado iww ...

ele emula a tela de um terminal IBM 3278 e 3279 modelos 2, 3, 4 e 5

entao nao sei como localizar a janela ... o programa utiliza janelas mdi, será que nao existe uma outra forma de localizar esta janela ... como por exemplo pelo nome, ou pelo processo???

eu tentei aqui pelo nome da janela mas sem sucesso ...
conto com a colaboracao do pessoal do forum

[]s


Responder Citar

17/01/2006

Adriano Santos

wnd := FindWindow(nil,´Calculadora´);


Tente inverter usando o segundo parâmetro que é o caption da janela, agora se são janelas MDI acho que não funciona.


Responder Citar

17/01/2006

Rafael Gomes

vou testar ... e tenho que ir passo a passo ...

entao vamos primeiro tentar achar a janela ... depois as janelas filhas ...


a respeito de material de consulta, sites e apostilas correlacionadas com o assunto, vc nao teria nada ??

abraços!!!!


Responder Citar

17/01/2006

Sanses

Olá

Não sei se funciona, pois nunca testei em aplicações MDI, mais vale a pena tentar. Baixe este aplicativo free [url=http://www.greatis.com/delphicb/windowse/download.html]WinDowse[/url] e use a aba Class para pegar o nome da classe da aplicação desejada. A Aba Parents para pegar os componentes, ex:

Abra o Internet Explorer e seleciona a Aba Class, posicione o cursor do mouse na barra de título e voce terá para o nome da aplicação IEFrame.

Agora selecione a aba parents e posicione o mouse em cima do combobox correspondente a barra de endereço, voce terá ComboboxEx32 para este componente.

Como disse não sei se funciona em MDI, teste ai e poste o resultado, ok?

[]´s
Sanses


Responder Citar

17/01/2006

Michael

Olá!

[url=http://subsimple.com/delphi.asp]Neste link[/url] vc vai encontrar o componente [b:9e2e4f4e2d]InterAppComm[/b:9e2e4f4e2d], que permite enviar mensagens de um aplicativo para o outro. Basta colocar um [i:9e2e4f4e2d]Sender [/i:9e2e4f4e2d]em uma aplicação, e um [i:9e2e4f4e2d]Receiver [/i:9e2e4f4e2d]na outra. Vem com um exemplo prático muito bom.

E vc não precisa se preocupar com janelas, API´s, etc. ;-) Na verdade, tudo o que os colegas estão falando aqui, sobre [b:9e2e4f4e2d]SendMessage[/b:9e2e4f4e2d], [b:9e2e4f4e2d]FindWindow[/b:9e2e4f4e2d], ele já implementa.

[]´s


Responder Citar

17/01/2006

Adriano Santos

Olá! [url=http://subsimple.com/delphi.asp]Neste link[/url] vc vai encontrar o componente [b:e22cd39f9a]InterAppComm[/b:e22cd39f9a], que permite enviar mensagens de um aplicativo para o outro. Basta colocar um [i:e22cd39f9a]Sender [/i:e22cd39f9a]em uma aplicação, e um [i:e22cd39f9a]Receiver [/i:e22cd39f9a]na outra. Vem com um exemplo prático muito bom. E vc não precisa se preocupar com janelas, API´s, etc. ;-) Na verdade, tudo o que os colegas estão falando aqui, sobre [b:e22cd39f9a]SendMessage[/b:e22cd39f9a], [b:e22cd39f9a]FindWindow[/b:e22cd39f9a], ele já implementa. []´s


Boa Michael, até eu vou dar uma olhada. :wink:


Responder Citar