CAPTURAR CAIXA DE TEXTO.REALMENTE E DIFICIL !
Boa tarde,Pessoal!
Eu tenho um projeto,que fui obrigado a guardar pois na época esbarrou numa dificuldade técnica
que eu não consegui resolver.Publiquei um tópico em vários forums na ocasião e ninguém soube
como solucionar.Mas,até hoje não me conformo por ter que interromper o software,por conta disto.
Resolvi tornar a abrir o tópico,pois de lá para cá o site,ganhou novos [Ô]Gurus[Ô].E bem pode ser que
alguém com muito conhecimento possa lançar uma luz sobre o caso.
O caso:
O problema na verdade é muito simples:
Eu tenho um programa aberto na tela ,que foi feito por terceiros. Não existe nenhum modo de meu sistema se comunicar
com este programa.O programa exibe na tela uma tela com diversos controles (Caixas de texto,Labels,etc...) ,como qualquer
programa comum feito para Windows. O que preciso é de alguma forma na qual meu sistema possa conseguir capturar ,por exemplo:
- O conteúdo de uma caixa de texto,exibida pela formulário na tela do programa.Ou seja,se na caixa de texto estiver preenchido o valor
[Ô]1234[Ô],o meu sistema teria de ter condição de realizar a leitura deste valor.
Isto é possÃvel????
Eu tenho um projeto,que fui obrigado a guardar pois na época esbarrou numa dificuldade técnica
que eu não consegui resolver.Publiquei um tópico em vários forums na ocasião e ninguém soube
como solucionar.Mas,até hoje não me conformo por ter que interromper o software,por conta disto.
Resolvi tornar a abrir o tópico,pois de lá para cá o site,ganhou novos [Ô]Gurus[Ô].E bem pode ser que
alguém com muito conhecimento possa lançar uma luz sobre o caso.
O caso:
O problema na verdade é muito simples:
Eu tenho um programa aberto na tela ,que foi feito por terceiros. Não existe nenhum modo de meu sistema se comunicar
com este programa.O programa exibe na tela uma tela com diversos controles (Caixas de texto,Labels,etc...) ,como qualquer
programa comum feito para Windows. O que preciso é de alguma forma na qual meu sistema possa conseguir capturar ,por exemplo:
- O conteúdo de uma caixa de texto,exibida pela formulário na tela do programa.Ou seja,se na caixa de texto estiver preenchido o valor
[Ô]1234[Ô],o meu sistema teria de ter condição de realizar a leitura deste valor.
Isto é possÃvel????
links quem mostram que isso é possivel, mas não é facil.
https://www.google.com.br/#hl=pt-BR&tbo=d&spell=1&q=GET+VALUE+TEXTBOX+OTHER+PROGRAM&sa=X&ei=zXfPULuYFYf29gSCxIGQCQ&ved=0CDAQvwUoAA&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&bvm=bv.1355325884,d.eWU&fp=7990ec0cbb90bd1b&bpcl=39967673&biw=1440&bih=753
http://stackoverflow.com/questions/162154/c-get-other-application-text-from-textbox-and-textarea
http://www.codeproject.com/Articles/14292/Runtime-Object-Editor
http://stackoverflow.com/questions/4539187/insert-text-into-the-textbox-of-another-application
http://stackoverflow.com/questions/352236/reading-from-a-text-field-in-another-applications-window
http://www.vbforums.com/showthread.php?505796-Visual-Basic-Get-Text-of-Another-Window-s-TextBox
https://www.google.com.br/#hl=pt-BR&tbo=d&spell=1&q=GET+VALUE+TEXTBOX+OTHER+PROGRAM&sa=X&ei=zXfPULuYFYf29gSCxIGQCQ&ved=0CDAQvwUoAA&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&bvm=bv.1355325884,d.eWU&fp=7990ec0cbb90bd1b&bpcl=39967673&biw=1440&bih=753
http://stackoverflow.com/questions/162154/c-get-other-application-text-from-textbox-and-textarea
http://www.codeproject.com/Articles/14292/Runtime-Object-Editor
http://stackoverflow.com/questions/4539187/insert-text-into-the-textbox-of-another-application
http://stackoverflow.com/questions/352236/reading-from-a-text-field-in-another-applications-window
http://www.vbforums.com/showthread.php?505796-Visual-Basic-Get-Text-of-Another-Window-s-TextBox
Caro MARCOS
Sim é totalmente possÃvel
Só não será 0800..........
é para comunicação com SAP, DATASUL, etc...... para clietnes com limites de licenças para integração com estes aplicativos
O PROBLEMA é QUE ESSA SOLUÇÃO PODE SER APLICADA EM PROGRAMINHAS QUE REPLICAM DADOS DE TEXTBOX DE PAGINAS DE BANCO E CONTAS DE EMAIL............
Boa Sorte
Sim é totalmente possÃvel
Citação:Isto é possÃvel????
Só não será 0800..........
é para comunicação com SAP, DATASUL, etc...... para clietnes com limites de licenças para integração com estes aplicativos
O PROBLEMA é QUE ESSA SOLUÇÃO PODE SER APLICADA EM PROGRAMINHAS QUE REPLICAM DADOS DE TEXTBOX DE PAGINAS DE BANCO E CONTAS DE EMAIL............
Boa Sorte
Trabalhei em uma empresa, que existia um [Ô]software de seguros[Ô], vamos chama-lo de [Ô]PAI[Ô], os funcionários abriam esse software e colocavam todos os campos [Ô]NOME, RG,CPF[Ô] dados que são obrigatorios nos demais sistemas (Aproximadamente 6, se não me engano) enfim, após o preenchimento no software [Ô]PAI[Ô] ele abria os demais softwares [Ô]FILHO[Ô] fazendo o [Ô]INPUT[Ô] das informações nos softwares, ele abria um por um, a tela tinha as coordenadas de cada campo (Posição do campo dentro do software FILHO) e saia colocando os [Ô]INPUTS[Ô], depois era só esperar.
Era em Delphi 6 ainda..rsrsrs
Se ele consegue colocar o [Ô]INPUT[Ô] ao meu ver dá para pegar sim, os TEXTBOX, como citado não será fácil !
Mais alguns exemplos:
http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/02a67f3a-4a26-4d9a-9c67-0fdff1428a66
http://bytes.com/topic/visual-basic-net/answers/363935-extracting-text-another-application
Good luck !
Era em Delphi 6 ainda..rsrsrs
Se ele consegue colocar o [Ô]INPUT[Ô] ao meu ver dá para pegar sim, os TEXTBOX, como citado não será fácil !
Mais alguns exemplos:
http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/02a67f3a-4a26-4d9a-9c67-0fdff1428a66
http://bytes.com/topic/visual-basic-net/answers/363935-extracting-text-another-application
Good luck !
Parece um keylogger.
Segue exemplo que enviei para o vbmania http://www.vbmania.com.br/pages/index.php?varModulo=Detalhe&varID=8168
Caro MARCOS
Isso mesmo chega muito próximo a isso
Quem desenvolve teria quer o cuidado de não estar violando as regras e segurança do aplicativo.
O proprio VB/VB.Net e C# não tem boas ferramentas para realizar estas TRANSACTION que se parece muito com INJECTION de código mas podem ser utilizadas para isso.
Totalmente legal se a tela do aplicativo de onde será extraido informações por exemplo as informações visÃveis NOME.RG, CPF, entre outra que se apresenta na tela disposta após uma consulta.
Isso é muit utilizado para leitura de módulos SAP, DATASUL, M. DYNAMICS, PROTEUS, etc........
Uma dica seria entrar em contato com o fabricante do Software que você esta buscando esta informações.
Para alguns sistemas que liberar esse tipo de acesso existe um [txt-color=#e80000]mapa de parâmetros[/txt-color].................... e outras que não libera mas o mapa é exatamente da mesma forma....... textbox, label, combobox, List entre soutros objetos de disposição de tela.
todos os programas que desenvolvemos VB/VB.Net C# tem um mapa de parâmetros.
Outro problema é obter a autorização da empresa ou pessoa que desenvolveu esse sistema para que possa olhar no aplicativo compilado para você montar um mapa de parâmetros. E assim fazer a TRANSACTION dos dados dispostos na tela para seu sistema.
Como o COLEGA LLAIA mensionou fica muito próximo de um [ô]KEYLOGGER[ô] ou um DATALOGGER ou deforma bem popular [ô]Chupa cabra[ô].......
Se tiver um módulo SAP e não quer que a empresa faça um EXPORT de dados pelo SAP [ô]porcausa do custo elevado no desenvolvimentoSAP[ô], mas gostaria de desenvolver seu código fonte em DotNet para fazer um IMPORT da tela do SAP para seu sistema é perfeitamente legal isso desde que acordado com as empresas.
Fazemos isso com a maioria de sistemas ERP(SAP, DATASUL, MICROSIGA, entre outra) para o código fonte de nossos clientes. E o mais importante com o concentimemto de ambas as partes.
Boa Sorte
Isso mesmo chega muito próximo a isso
Citação:Parece um keylogger
Quem desenvolve teria quer o cuidado de não estar violando as regras e segurança do aplicativo.
O proprio VB/VB.Net e C# não tem boas ferramentas para realizar estas TRANSACTION que se parece muito com INJECTION de código mas podem ser utilizadas para isso.
Totalmente legal se a tela do aplicativo de onde será extraido informações por exemplo as informações visÃveis NOME.RG, CPF, entre outra que se apresenta na tela disposta após uma consulta.
Isso é muit utilizado para leitura de módulos SAP, DATASUL, M. DYNAMICS, PROTEUS, etc........
Uma dica seria entrar em contato com o fabricante do Software que você esta buscando esta informações.
Para alguns sistemas que liberar esse tipo de acesso existe um [txt-color=#e80000]mapa de parâmetros[/txt-color].................... e outras que não libera mas o mapa é exatamente da mesma forma....... textbox, label, combobox, List entre soutros objetos de disposição de tela.
todos os programas que desenvolvemos VB/VB.Net C# tem um mapa de parâmetros.
Outro problema é obter a autorização da empresa ou pessoa que desenvolveu esse sistema para que possa olhar no aplicativo compilado para você montar um mapa de parâmetros. E assim fazer a TRANSACTION dos dados dispostos na tela para seu sistema.
Como o COLEGA LLAIA mensionou fica muito próximo de um [ô]KEYLOGGER[ô] ou um DATALOGGER ou deforma bem popular [ô]Chupa cabra[ô].......
Se tiver um módulo SAP e não quer que a empresa faça um EXPORT de dados pelo SAP [ô]porcausa do custo elevado no desenvolvimentoSAP[ô], mas gostaria de desenvolver seu código fonte em DotNet para fazer um IMPORT da tela do SAP para seu sistema é perfeitamente legal isso desde que acordado com as empresas.
Fazemos isso com a maioria de sistemas ERP(SAP, DATASUL, MICROSIGA, entre outra) para o código fonte de nossos clientes. E o mais importante com o concentimemto de ambas as partes.
Boa Sorte
Olá,AJSO!
é exatamente este o meu caso.
Hoje temos um funcionário que acessa um ERP.Literalmente tem de navegar até a tela que lhe interessa,copiar na [Ô]Mão[Ô] os dados exibidos
na tela e depois acessar um outro sistema interno nosso e lançar as informações neste segundo sistema.E eu que pensei que tivesse um
problema fora do comum.Ao que parece pelo que mencionou,ser um problema comum.
é exatamente este o meu caso.
Hoje temos um funcionário que acessa um ERP.Literalmente tem de navegar até a tela que lhe interessa,copiar na [Ô]Mão[Ô] os dados exibidos
na tela e depois acessar um outro sistema interno nosso e lançar as informações neste segundo sistema.E eu que pensei que tivesse um
problema fora do comum.Ao que parece pelo que mencionou,ser um problema comum.
Esse ERP, acessa uma base de dados, correto? Pegue os dados de lá, não da tela.
Caro MARCOS
Isso mesmo. Eu te entendo mesmo......
E um problema muito comum mesmo.......... a maioria das empresas contratam um sistema de grande porte, depois precisam começar a customizar.
Se deparam no problema [(custo/serviço) * benefÃcio]............... Empresas que comercializar o SAP, DATASUL, TOTUS, SINTEGRA entre essas grandes empresas
Seus serviços de customização são na maioraia das vezes muito caro, e outras se recusam fazer a customização de telas, relatório ou outrio serviços por entender que descaracteriza seu produto.
Como o colega KERPLUNK relatou ....
Pelo menos essas empresas que citei acima não disponibilizam o acesso ao Banco de Dados direto..... eles disponibilizar um framework para exportar dados de processo de algumas telas...... muito difÃcil extremamente inutil......... mas serve para alguma coisa........
O que posso indicar é realmente essa forma do [ô]mapa de parâmetros[ô] (engenharia reversa, não tem uma regra especÃfica ou uma receita de bolo para seguir....)
Como foi relatado nesses post anteriores, chega quase ser um INJECTION ou invasão do sistema, mas com o concentimento de ambas as partes e o cuidado na extração dos dados para não caracterizar qualquer tipo de extração de dados não autorizada ou fraude ao sistemas de informação......
Fiz alguns trabalhos para o modulo em um cliente que utiliza um SAP R3 e um sistema próprio em DotNet.
para estes Módulos:
SAP MM - Material Management
SAP SD - Sales and Distribution
SAP FI - Financial Accounting
Teve que montar um [ô]mapa de parâmetros[ô] diferente para cada módulo mesmo sendo desenvolvido na mesma tecnologia.
E mesmo assim foram 03 processos totalmente diferente para montar esse mapa de parâmetros e extrair dados para o Sistema interno do Cliente DotNet.......
Esse mapa de parâmetros deve ser feito por engenharia reversa.......... (entender o decompilador, algoritimo hexadecimal, acesso a memória do objeto)................
Parece coisa de louco mas não é........... é buscar informação dentro da memória, ou log da aplicação. Dá para fazer com VB.Net ou C# perfeitamente.......
mas se utilizar o C++ fica melhor e mais prático............
No executável da aplicação, no conjunto de dll da aplicação, nos controles da aplicação, na memória dos objetos de acesso da aplicação.
é quase uma caçada na floresta de noite sem lua e com chuva........ você vai bombardear a aplicação e montar um mapa das informações que conseguir extrair.......
Boa Sorte
Isso mesmo. Eu te entendo mesmo......
Citação:Olá,AJSO!
é exatamente este o meu caso.
Hoje temos um funcionário que acessa um ERP.Literalmente tem de navegar até a tela que lhe interessa,copiar na [Ô]Mão[Ô] os dados exibidos
na tela e depois acessar um outro sistema interno nosso e lançar as informações neste segundo sistema.E eu que pensei que tivesse um
problema fora do comum.Ao que parece pelo que mencionou,ser um problema comum.
E um problema muito comum mesmo.......... a maioria das empresas contratam um sistema de grande porte, depois precisam começar a customizar.
Se deparam no problema [(custo/serviço) * benefÃcio]............... Empresas que comercializar o SAP, DATASUL, TOTUS, SINTEGRA entre essas grandes empresas
Seus serviços de customização são na maioraia das vezes muito caro, e outras se recusam fazer a customização de telas, relatório ou outrio serviços por entender que descaracteriza seu produto.
Como o colega KERPLUNK relatou ....
Citação:Esse ERP, acessa uma base de dados, correto? Pegue os dados de lá, não da tela.
Pelo menos essas empresas que citei acima não disponibilizam o acesso ao Banco de Dados direto..... eles disponibilizar um framework para exportar dados de processo de algumas telas...... muito difÃcil extremamente inutil......... mas serve para alguma coisa........
O que posso indicar é realmente essa forma do [ô]mapa de parâmetros[ô] (engenharia reversa, não tem uma regra especÃfica ou uma receita de bolo para seguir....)
Como foi relatado nesses post anteriores, chega quase ser um INJECTION ou invasão do sistema, mas com o concentimento de ambas as partes e o cuidado na extração dos dados para não caracterizar qualquer tipo de extração de dados não autorizada ou fraude ao sistemas de informação......
Fiz alguns trabalhos para o modulo em um cliente que utiliza um SAP R3 e um sistema próprio em DotNet.
para estes Módulos:
SAP MM - Material Management
SAP SD - Sales and Distribution
SAP FI - Financial Accounting
Teve que montar um [ô]mapa de parâmetros[ô] diferente para cada módulo mesmo sendo desenvolvido na mesma tecnologia.
E mesmo assim foram 03 processos totalmente diferente para montar esse mapa de parâmetros e extrair dados para o Sistema interno do Cliente DotNet.......
Esse mapa de parâmetros deve ser feito por engenharia reversa.......... (entender o decompilador, algoritimo hexadecimal, acesso a memória do objeto)................
Parece coisa de louco mas não é........... é buscar informação dentro da memória, ou log da aplicação. Dá para fazer com VB.Net ou C# perfeitamente.......
mas se utilizar o C++ fica melhor e mais prático............
No executável da aplicação, no conjunto de dll da aplicação, nos controles da aplicação, na memória dos objetos de acesso da aplicação.
é quase uma caçada na floresta de noite sem lua e com chuva........ você vai bombardear a aplicação e montar um mapa das informações que conseguir extrair.......
Boa Sorte
AJSO,
Muito obrigado pelos esclarecimentos!
De fato,eu não tenho acesso a BD (Se tivese seria fácil).De qualquer modo,nãao tenho medo de desafios
tecnológicos.No meu caso,seria uma motivação a mais.O que terei de avaliar é se vale a pena do ponto de
vista Custo X Beneficio. é que a empresa onde atuo tem uma longa tradição de não valorizar profissionais
de TI. Não sei se você entende???
Muito obrigado pelos esclarecimentos!
De fato,eu não tenho acesso a BD (Se tivese seria fácil).De qualquer modo,nãao tenho medo de desafios
tecnológicos.No meu caso,seria uma motivação a mais.O que terei de avaliar é se vale a pena do ponto de
vista Custo X Beneficio. é que a empresa onde atuo tem uma longa tradição de não valorizar profissionais
de TI. Não sei se você entende???
Tópico encerrado , respostas não são mais permitidas