Procurar palavra na tela do computador.

27/07/2023

0

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.
Rodrigo Bizzotto

Rodrigo Bizzotto

Responder

Post mais votado

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.

Arthur Heinrich

Arthur Heinrich
Responder

Mais Posts

27/07/2023

Arthur Heinrich

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.
Responder

27/07/2023

Rodrigo Bizzotto

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.



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.


Responder

27/07/2023

Rodrigo Bizzotto

"Bem simples" = pouca funcionalidade. Heheh
Responder

28/07/2023

Rodrigo Bizzotto

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?
Responder

28/07/2023

Arthur Heinrich

Não acho que ele lê da tela. Deve utilizar DDE ou RTD.
Responder

29/07/2023

Rodrigo Bizzotto

Não acho que ele lê da tela. Deve utilizar DDE ou RTD.


Vou pesquisar sobre isso. Obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar