api do windows
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!!!!!!!!!!!!!!!
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
Curtidas 0
Respostas
Edilcimar
17/01/2006
já tentou jogar para a área de transferência?
GOSTEI 0
Adriano Santos
17/01/2006
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
Para colar
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;
GOSTEI 0
Rafael Gomes
17/01/2006
[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
Para colar
[/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!!!
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;
o problema amigo é que quero copiar de uma aplicacao para outra, nao na mesma aplicacao ...
se puder ajudar eu agradeço!!
abraços!!!
GOSTEI 0
Adriano Santos
17/01/2006
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
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
GOSTEI 0
Rafael Gomes
17/01/2006
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
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
GOSTEI 0
Adriano Santos
17/01/2006
[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:
Talvez o melhor seja usar sockets.
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]), 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.
GOSTEI 0
Rafael Gomes
17/01/2006
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
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
GOSTEI 0
Rafael Gomes
17/01/2006
só para complementar ...
esta funcao acha a janela pelo nome?? pelo titulo?? pelo nome do processo???
nao entendi o terceiro parametro, o que esse parametro tem a ver com a janela do notepad??
[]ss
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
GOSTEI 0
Adriano Santos
17/01/2006
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
GOSTEI 0
Rafael Gomes
17/01/2006
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
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
GOSTEI 0
Adriano Santos
17/01/2006
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.
GOSTEI 0
Rafael Gomes
17/01/2006
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!!!!
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!!!!
GOSTEI 0
Sanses
17/01/2006
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
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
GOSTEI 0
Michael
17/01/2006
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
[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
GOSTEI 0
Adriano Santos
17/01/2006
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:
GOSTEI 0
Rafael Gomes
17/01/2006
Olá!
[url=http://subsimple.com/delphi.asp]Neste link[/url] vc vai encontrar o componente [b:868c2b629d]InterAppComm[/b:868c2b629d], que permite enviar mensagens de um aplicativo para o outro. Basta colocar um [i:868c2b629d]Sender [/i:868c2b629d]em uma aplicação, e um [i:868c2b629d]Receiver [/i:868c2b629d]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:868c2b629d]SendMessage[/b:868c2b629d], [b:868c2b629d]FindWindow[/b:868c2b629d], ele já implementa.
[]´s
ola michael, se nao estou enganado, para que funcione perfeitamente preciso que a aplicacao que vai receber os textos tenh o componente ´Receiver´ certo???
mas se a aplicacao nao tiver, caimos no mesmo problema que os colegas estavam tentando resolver ... mas mesmo assim, muito boa a dica
obrigado ...
ainda continuo tentando achar uma forma de encontrar a aplicacao, e dentro da aplicacao achar uma janela filha ... pelos nomes ....
abraços
obrigado a todos que estao contribuindo!!
GOSTEI 0
Rafael Gomes
17/01/2006
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
bom amigo, testei ... o programa funciona perfeitamente ... realmente muito bom ... agora vou tentar continuar a implementacao com as informacoes que o programa me forneceu, qualquer coisa corro aqui pro forum pra ver se voces podem me ajudar ...
mais uma vez, obrigado aos que colaboraram ...
[]ss
GOSTEI 0
Rafael Gomes
17/01/2006
só para complementar pessoal ...
estou utilizando o seguinte codigo para enviar o texto ... mas o mesmo nao esta funcionando ...
[b:10a4e8440f]informacoes da janela principal do programa ...[/b:10a4e8440f]
[b:10a4e8440f]informacoes da janela filha ...[/b:10a4e8440f]
para quem teve paciencia de ver o topico até aqui ...
a estrutura do programa para o qual preciso enviar o texto é a seguinte ...
existe a aplicacao principal ... que é de classe [b:10a4e8440f]MdiFrame[/b:10a4e8440f]
dentro dessa janela existe um ´componente´ de classe [b:10a4e8440f]MdiClient[/b:10a4e8440f]
ao que me parece, quando se abre a janela filha de classe [b:10a4e8440f]MdiEmuChild [/b:10a4e8440f] ela fica dentro de MdiClient que por sua vez esta dentro de MdiFrame ...
:cry:
se alguem tiver alguma sugestao ... eu agradeceria MUITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
estou utilizando o seguinte codigo para enviar o texto ... mas o mesmo nao esta funcionando ...
procedure TForm1.Button1Click(Sender: TObject); var wnd : HWND; c : HWND; i : Integer; s : string; begin wnd := FindWindow(´MdiFrame´,nil); if wnd <> 0 then begin c:= GetWindow(wnd,GW_CHILD); wnd := FindWindowEx(wnd,c,´MdiEmuchild´,nil); s := ´texto´; For i := 1 to Length(s) do SendMessage(wnd, WM_CHAR, Word(s[i]), 0); PostMessage(wnd, WM_KEYDOWN , VK_RETURN, 0); {Simular o enter} PostMessage(wnd, WM_KEYDOWN , VK_SPACE, 0); {Simular o espaço} end; end;
[b:10a4e8440f]informacoes da janela principal do programa ...[/b:10a4e8440f]
*** Window Information ********************************************************* Text Irma Mainframe Display Process ID 00000998 App instance 171F1576 Handle 00010410 Parent handle 00000000 Control ID 0031032D Function 00000000 Menu handle 0031032D Coords in parent left:-4, top:-4, right:1028, bottom:744 Coords in screen left:-4, top:-4, right:1028, bottom:744 Window size width:1032, height:748 Client area size width:1024, height:702 Style 17CF0000 Extended style 00000100 ws_overlapped | ws_visible | ws_clipsiblings | ws_clipchildren | ws_maximize | ws_border | ws_dlgframe | ws_sysmenu | ws_thickframe | ws_minimizebox | ws_maximizebox | ws_ex_windowedge | ws_ex_left | ws_ex_ltrreading | ws_ex_rightscrollbar *** Class Information ********************************************************** Name MdiFrame Function D6810820 Icon 000303A3 Small icon 000803E3 Cursor 00010011 Bkg brush 0000000D Module handle 171F1576 Style 00000003 cs_vredraw | cs_hredraw *** Parents ******************************************************************** # Handle Class name Text *** Children ******************************************************************* Handle Class name Text 001 00010412 MDIClient 002 00010416 ATC_DockWindow 003 0001041C DCAStatusBar *** Digger ********************************************************************* # Handle Class name Text 001 00010410 MdiFrame Irma Mainframe Display 002 000100BE SysListView32 FolderView 003 000100BC SHELLDLL_DefView 004 000100B6 Progman Program Manager *** Executable Information ***************************************************** File path C:\WINDOWS\system32\ File name ntvdm.exe Original file name NTVDM.EXE File description NTVDM.EXE File version 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158) Product name Sistema operacional Microsoft® Windows® Internal name NTVDM.EXE Legal copyright © Microsoft Corporation. Todos os direitos reservados. Legal trademarks Product version 5.1.2600.2180 Company name Microsoft Corporation Comments
[b:10a4e8440f]informacoes da janela filha ...[/b:10a4e8440f]
*** Window Information ********************************************************* Text Untitled:1* [A] Process ID 00000998 App instance 171F1576 Handle 001603A6 Parent handle 00010412 Control ID 00009000 Function 00000000 Menu handle 00000000 Coords in parent left:-4, top:-23, right:1028, bottom:653 Coords in screen left:-4, top:45, right:1028, bottom:721 Window size width:1032, height:676 Client area size width:1024, height:649 Style 57C70000 Extended style 00000140 ws_overlapped | ws_child | ws_visible | ws_clipsiblings | ws_clipchildren | ws_maximize | ws_border | ws_dlgframe | ws_thickframe | ws_group | ws_tabstop | ws_ex_mdichild | ws_ex_windowedge | ws_ex_left | ws_ex_ltrreading | ws_ex_rightscrollbar *** Class Information ********************************************************** Name MdiEmuChild Function D6590000 Icon 000303A3 Small icon 000F03CD Cursor 00010011 Bkg brush 01900011 Module handle 171F1576 Style 0000002B cs_vredraw | cs_hredraw | cs_dblclks | cs_owndc *** Parents ******************************************************************** # Handle Class name Text 001 00010412 MDIClient 002 00010410 MdiFrame Irma Mainframe Display - [ Un... *** Children ******************************************************************* Handle Class name Text 001 00140368 EmuStatus *** Digger ********************************************************************* # Handle Class name Text 001 001603A6 MdiEmuChild Untitled:1* [A] 002 00010412 MDIClient 003 00010410 MdiFrame Irma Mainframe Display - [ Un... 004 000202BA TEditControl 005 000202BC TPanel 006 000202B8 TPanel 007 00050274 TPanel 008 000302AE TPanel 009 00040292 TPanel 010 00030288 TEditWindow Unit1.pas 011 000102C8 TForm1 Form1 012 000100BE SysListView32 FolderView 013 000100BC SHELLDLL_DefView 014 000100B6 Progman Program Manager *** Executable Information ***************************************************** File path C:\WINDOWS\system32\ File name ntvdm.exe Original file name NTVDM.EXE File description NTVDM.EXE File version 5.1.2600.2180 (xpsp_sp2_rtm.040803-2158) Product name Sistema operacional Microsoft® Windows® Internal name NTVDM.EXE Legal copyright © Microsoft Corporation. Todos os direitos reservados. Legal trademarks Product version 5.1.2600.2180 Company name Microsoft Corporation Comments
para quem teve paciencia de ver o topico até aqui ...
a estrutura do programa para o qual preciso enviar o texto é a seguinte ...
existe a aplicacao principal ... que é de classe [b:10a4e8440f]MdiFrame[/b:10a4e8440f]
dentro dessa janela existe um ´componente´ de classe [b:10a4e8440f]MdiClient[/b:10a4e8440f]
ao que me parece, quando se abre a janela filha de classe [b:10a4e8440f]MdiEmuChild [/b:10a4e8440f] ela fica dentro de MdiClient que por sua vez esta dentro de MdiFrame ...
:cry:
se alguem tiver alguma sugestao ... eu agradeceria MUITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
GOSTEI 0
Rafael Gomes
17/01/2006
peço licença aos moderadores ... mas todas as mensagens que estou postando julgo relevantes para resolucao do problema ...
nao estou apenas upando meu topico ... :oops:
segue abaixo a hierarquia das janelas do programa para o qual preciso enviar os textos ...
[b:f9b7f8a139]screen da hierarquia das janelas!!![/b:f9b7f8a139]
[b:f9b7f8a139]screen das telas do programa [/b:f9b7f8a139]
é isso ... aguardo a contribuicao dos amigos ...
[]s
nao estou apenas upando meu topico ... :oops:
segue abaixo a hierarquia das janelas do programa para o qual preciso enviar os textos ...
[b:f9b7f8a139]screen da hierarquia das janelas!!![/b:f9b7f8a139]
[b:f9b7f8a139]screen das telas do programa [/b:f9b7f8a139]
é isso ... aguardo a contribuicao dos amigos ...
[]s
GOSTEI 0
Rafael Gomes
17/01/2006
sobe!
GOSTEI 0
Rafael Gomes
17/01/2006
up!
GOSTEI 0
Rafael Gomes
17/01/2006
sobe ! :cry:
GOSTEI 0