Pergunta

Há alguns chamam de API Win OS ou assim que deixaria um obter o texto da tela

não via a obtenção de um instantâneo e, em seguida, fazendo OCR nele, mas via API

a idéia é fazer com que o texto que está sob o mouse que o usuário aponta para e clica em.

Isto é como ferramentas como o Babylon ( http://www.babylon.com ) e 1-Click respostas ( http://www.answers.com/main/download_answers_win.jsp ) e muitos outros trabalhos.

Pode alguém me aponte para a direção certa para obter essa funcionalidade?

Foi útil?

Solução

Não há nenhuma maneira direta de obter texto. Uma aplicação pode processar texto em um zilhão de maneiras diferentes (sendo um deles o Windows API), e depois ele é processado. - É apenas um monte de pixels

Um método que você pode tentar, porém, é encontrar a janela diretamente sob o mouse e tentar obter o texto a partir deles. Isso iria funcionar bem na maioria dos controles padrão do Windows (rótulos, caixas de texto, etc.) não iria funcionar em navegadores de Internet embora.

Eu acho que o melhor que você pode fazer é fazer a sua inscrição de modo que ele suporta como muitos diferentes controles (comuns) quanto possível da maneira descrita acima.

Outras dicas

Você pode obter o texto de cada janela com a API GetWindowText. A posição do mouse pode ser encontrado com a API GetCursorPos.

Em Delphi você poderia usar esta função (parabéns a Pedro Abaixo)

Function ChildWindowUnderCursor: HWND;
Var
  hw, lasthw: HWND;
  pt, clientpt: TPoint;
Begin
  Result := 0;
  GetCursorPos( pt );
  // find top-level window under cursor
  hw := WindowFromPoint( pt );
  If hw = 0 Then Exit;

  // look for child windows in the window recursively
  // until we find no new windows
  Repeat
    lasthw := hw;
    clientpt := Pt;
    Windows.ScreenToClient( lasthw, clientpt );
    // Use ChildwindowfromPoint if app needs to run on NT 3.51!
    hw := ChildwindowFromPointEx( lasthw, clientpt, CWP_SKIPINVISIBLE );
  Until hw = lasthw;
  Result := hw;
End;

Saudações,
Lieven

O Windows tem APIs para ferramentas de acessibilidade, como leitores de tela para cegos. (As versões mais recentes também são usados ??para outros fins, como a automação da interface do usuário e testes.) Ele funciona com muitas aplicações, mesmo a maioria dos navegadores que tornam seu próprio conteúdo sem usar os controles padrão do Windows. Não vai funcionar com todas as aplicações, mas pode ser usado para descobrir o texto sob o mouse na maioria dos casos.

A API atual é chamado de Windows Automation API. Descrevendo como fazer isso, em geral, está além do escopo de uma resposta Stack Overflow, então eu simplesmente forneceu um link para a documentação.

A API mais antigo que foi amplamente disponível quando esta pergunta foi publicado primeiro é chamado de Microsoft Active Accessibility API . Tal como acontece com as APIs modernas, o escopo aqui é muito ampla para detalhes aqui.

Note que a documentação para ambas as APIs está escrito tanto para os desenvolvedores de ferramentas de acessibilidade (como leitores de tela), bem como para desenvolvedores escrever aplicativos que querem ser compatível com as ferramentas de acessibilidade.

A idéia básica é que uma ferramenta de acessibilidade recebe interfaces COM fornecidas pela janela do aplicativo de destino (s), e pode usar essas interfaces para descobrir os controles e seu texto e como eles estão relacionados tanto lógica e espacialmente. Aplicações que são compostas de controles padrão do Windows são na maioria automaticamente suportados. Aplicações com implementações de interface do usuário personalizada tem que fazer o trabalho para fornecer interfaces. Felizmente, os mais importantes, como os navegadores principais, ter feito o trabalho para apoiar estas interfaces.

eu acho que é chamado de área de transferência. eu vou apostar esses programas injetar clique e Click & teclado duplas eventos e, em seguida, copiar itens lá para inspeção. Alternativamente, eles são jiggy ficando com os controles de janelas de texto, e agarrando o conteúdo dessa maneira. eu suspeito devido a questões de segurança, essas ferramentas têm problemas em execução no Vista também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top