Procurar palavra na tela do computador.
Bom dia pessoal,
Queria fazer o seguinte:
Tenho um software rodando no meu computador. Preciso identificar se em algum lugar da tela aparece algo escrito,tipo uma palavra.
Alguém poderia me dar um caminho pra fazer isso.
Queria fazer o seguinte:
Tenho um software rodando no meu computador. Preciso identificar se em algum lugar da tela aparece algo escrito,tipo uma palavra.
Alguém poderia me dar um caminho pra fazer isso.
Rodrigo Bizzotto
Curtidas 0
Melhor post
Arthur Heinrich
28/07/2023
Como você pretende deixar a janela da aplicação oculta e sem foco, não será possível capturar o seu conteúdo.
Você pode capturar o conteúdo da tela (desktop), utilizando as funções de cópia de imagem como bitblt e manipular a imagem capturada em busca do padrão que você procura. Porém, não dá para fazer o mesmo com uma aplicação oculta, já que a imagem só é desenhada quando a janela está visível.
Entretanto, por se tratar de um software "home broker", é muito possível que ele permita o uso de DDE. É comum os administradores de fundos utilizarem o Excel e utilizam DDE para manter a planilha atualizada o tempo todo.
Dê uma olhada em: https://ajuda.nelogica.com.br/hc/pt-br/articles/360044293432-Como-configurar-RTD-DDE-no-Profit
O Excel consegue fazer as chamadas DDE facilmente e você pode implementar via Delphi também.
Você pode capturar o conteúdo da tela (desktop), utilizando as funções de cópia de imagem como bitblt e manipular a imagem capturada em busca do padrão que você procura. Porém, não dá para fazer o mesmo com uma aplicação oculta, já que a imagem só é desenhada quando a janela está visível.
Entretanto, por se tratar de um software "home broker", é muito possível que ele permita o uso de DDE. É comum os administradores de fundos utilizarem o Excel e utilizam DDE para manter a planilha atualizada o tempo todo.
Dê uma olhada em: https://ajuda.nelogica.com.br/hc/pt-br/articles/360044293432-Como-configurar-RTD-DDE-no-Profit
O Excel consegue fazer as chamadas DDE facilmente e você pode implementar via Delphi também.
GOSTEI 1
Mais Respostas
Arthur Heinrich
27/07/2023
Em linhas gerais, o sistema operacional protege a memória das aplicações para evitar que uma aplicação interfira na outra. Então, a possibilidade de você identificar isso examinando a memória das aplicações é, provavelmente, zero.
Se estamos falando de Windows, que trabalha com mensagens, podemos ter troca de mensagens entre as aplicações. Mas, uma coisa é enviar uma mensagem para uma aplicação qualquer. Outra bem diferente é querer que outra aplicação envie uma mensagem para a sua aplicação, com o conteúdo que você deseja. Isto é válido para aplicações que utilizam DDE (Dynamic Data Exchange), mas não parece ser o seu caso.
Então, só resta o jeito difícil, que é capturar a parte visível da tela e identificar o que está escrito, utilizando um processo de OCR (Optical Character Recognition).
Ou seja, não é tão simples como parece.
Mas, minha curiosidade me faz perguntar o seu objetivo com isso. É possível que haja outra maneira de obter o que você precisa, sem "hackear" outras aplicações.
Se estamos falando de Windows, que trabalha com mensagens, podemos ter troca de mensagens entre as aplicações. Mas, uma coisa é enviar uma mensagem para uma aplicação qualquer. Outra bem diferente é querer que outra aplicação envie uma mensagem para a sua aplicação, com o conteúdo que você deseja. Isto é válido para aplicações que utilizam DDE (Dynamic Data Exchange), mas não parece ser o seu caso.
Então, só resta o jeito difícil, que é capturar a parte visível da tela e identificar o que está escrito, utilizando um processo de OCR (Optical Character Recognition).
Ou seja, não é tão simples como parece.
Mas, minha curiosidade me faz perguntar o seu objetivo com isso. É possível que haja outra maneira de obter o que você precisa, sem "hackear" outras aplicações.
GOSTEI 0
Rodrigo Bizzotto
27/07/2023
Em linhas gerais, o sistema operacional protege a memória das aplicações para evitar que uma aplicação interfira na outra. Então, a possibilidade de você identificar isso examinando a memória das aplicações é, provavelmente, zero.
Se estamos falando de Windows, que trabalha com mensagens, podemos ter troca de mensagens entre as aplicações. Mas, uma coisa é enviar uma mensagem para uma aplicação qualquer. Outra bem diferente é querer que outra aplicação envie uma mensagem para a sua aplicação, com o conteúdo que você deseja. Isto é válido para aplicações que utilizam DDE (Dynamic Data Exchange), mas não parece ser o seu caso.
Então, só resta o jeito difícil, que é capturar a parte visível da tela e identificar o que está escrito, utilizando um processo de OCR (Optical Character Recognition).
Ou seja, não é tão simples como parece.
Mas, minha curiosidade me faz perguntar o seu objetivo com isso. É possível que haja outra maneira de obter o que você precisa, sem "hackear" outras aplicações.
Se estamos falando de Windows, que trabalha com mensagens, podemos ter troca de mensagens entre as aplicações. Mas, uma coisa é enviar uma mensagem para uma aplicação qualquer. Outra bem diferente é querer que outra aplicação envie uma mensagem para a sua aplicação, com o conteúdo que você deseja. Isto é válido para aplicações que utilizam DDE (Dynamic Data Exchange), mas não parece ser o seu caso.
Então, só resta o jeito difícil, que é capturar a parte visível da tela e identificar o que está escrito, utilizando um processo de OCR (Optical Character Recognition).
Ou seja, não é tão simples como parece.
Mas, minha curiosidade me faz perguntar o seu objetivo com isso. É possível que haja outra maneira de obter o que você precisa, sem "hackear" outras aplicações.
Não consegui colocar a imagem aqui, então segue o link abaixo:
https://uploaddeimagens.com.br/imagens/7J-ticI
Veja a imagem, é um print de parte de um software que utilizado na minha máquina mesmo.
Ai queria fazer um sistema que ficasse rodando "ocultamente" (com o objetivo de não atrapalhar a utilização dos outros programas), e que fizesse a leitura da tela. Caso identificasse aquele "5R" ali que circulei por exemplo, em qualquer lugar do monitor, o programa emitiria um aviso na tela. Bem simples.
GOSTEI 0
Rodrigo Bizzotto
27/07/2023
"Bem simples" = pouca funcionalidade. Heheh
GOSTEI 0
Rodrigo Bizzotto
27/07/2023
Arthur,
Com essa parte do DDE não vai resolver.
Vou dar mais um exemplo de um software de terceiros (Signal: https://www.tradersoftware.com.br/signal/) que faz algo parecido com oq eu to querendo.
Você abre o Signal, ele não fica minimizado no Windows, fica aparente em algum cantinho da tela.
Ai ele faz a leitura de algumas partes especificas da aplicação aberta do Profit, isso a cada x milissegundos. Itens marcados em 1, 2 e 3 do print abaixo.
https://uploaddeimagens.com.br/imagens/5Onzass
Será que esse Signal tira um print da tela e busca a mudança no padrão de uma área especifica?
Não iria consumir muito processamento fazer isso toda hora em menos de 1 segundo por vez?
Com essa parte do DDE não vai resolver.
Vou dar mais um exemplo de um software de terceiros (Signal: https://www.tradersoftware.com.br/signal/) que faz algo parecido com oq eu to querendo.
Você abre o Signal, ele não fica minimizado no Windows, fica aparente em algum cantinho da tela.
Ai ele faz a leitura de algumas partes especificas da aplicação aberta do Profit, isso a cada x milissegundos. Itens marcados em 1, 2 e 3 do print abaixo.
https://uploaddeimagens.com.br/imagens/5Onzass
Será que esse Signal tira um print da tela e busca a mudança no padrão de uma área especifica?
Não iria consumir muito processamento fazer isso toda hora em menos de 1 segundo por vez?
GOSTEI 0
Arthur Heinrich
27/07/2023
Não acho que ele lê da tela. Deve utilizar DDE ou RTD.
GOSTEI 1
Rodrigo Bizzotto
27/07/2023
Não acho que ele lê da tela. Deve utilizar DDE ou RTD.
Vou pesquisar sobre isso. Obrigado.
GOSTEI 0