Procurar palavra na tela do computador.

Delphi

27/07/2023

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

Curtidas 0

Melhor post

Arthur Heinrich

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.
GOSTEI 1

Mais Respostas

Arthur Heinrich

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

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.



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

Rodrigo Bizzotto

27/07/2023

"Bem simples" = pouca funcionalidade. Heheh
GOSTEI 0
Rodrigo Bizzotto

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?
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

27/07/2023

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

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
POSTAR