Domanda

V'è una certa chiamata API Win OS o giù di lì, che avrebbe lasciato uno ottenere il testo dallo schermo

non tramite l'ottenimento di una fotografia e poi fare l'OCR su di esso, ma tramite API

l'idea è quella di ottenere il testo che si trova sotto il mouse che i punti utente a e fa clic su.

Questo è il modo strumenti come Babilonia ( http://www.babylon.com ) e 1-Click risposte ( http://www.answers.com/main/download_answers_win.jsp ) e molti altri lavorano.

Qualcuno mi può indicare la giusta direzione per ottenere questa funzionalità?

È stato utile?

Soluzione

Non v'è alcun modo diretto per ottenere il testo. Un'applicazione potrebbe rendere il testo in un triliardo di modi diversi (Windows API essere uno di loro), e dopo che è stata resa -. È solo un mucchio di pixel

Un metodo si potrebbe provare comunque è quello di trovare la finestra direttamente sotto il mouse e cercando di ottenere il testo da loro. Questo potrebbe funzionare bene sulla maggior parte dei controlli standard di Windows (etichette, caselle di testo, ecc) non dovrebbe funzionare su browser Internet però.

Credo che il meglio che puoi fare è rendere la vostra applicazione in modo tale che esso supporta il maggior numero di controlli diversi (comune) come possibile nel modo descritto sopra.

Altri suggerimenti

È possibile ottenere il testo di ogni finestra con l'API GetWindowText. La posizione del mouse può essere trovata con l'API GetCursorPos.

In Delphi è possibile utilizzare questa funzione (complimenti a Peter Qui di seguito)

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;

Saluti,
Lieven

Windows ha API per gli strumenti di accessibilità come screen reader per i non vedenti. (Le versioni più recenti sono utilizzati anche per altri scopi, come l'automazione dell'interfaccia utente e la sperimentazione.) Funziona con molte applicazioni, anche la maggior parte dei browser che rendono i propri contenuti senza utilizzare i comandi standard di Windows. Non funziona con tutte le applicazioni, ma può essere utilizzato per capire il testo sotto il mouse nella maggior parte dei casi.

L'API corrente è detta di Windows Automation API . Descrivendo come fare questo, in generale, è oltre la portata di una risposta Stack Overflow, quindi ho semplicemente fornito un link alla documentazione.

L'API vecchio che era ampiamente disponibile quando questa domanda è stata pubblicata prima è chiamata la Microsoft Active Accessibility API . Come con le API moderni, il campo di applicazione qui è troppo ampio per i dettagli qui.

Si noti che la documentazione sia per le API è scritto sia sia per gli sviluppatori costruiscono strumenti di accessibilità (come lettori di schermo), così come per gli sviluppatori che scrivono applicazioni che vogliono essere compatibile con tali strumenti di accessibilità.

L'idea di base è che uno strumento di accessibilità ottiene interfacce COM forniti dalla finestra (s) dell'applicazione di destinazione, e può utilizzare queste interfacce per capire i controlli e il loro testo e come sono in relazione sia logicamente che spazialmente. Le applicazioni che sono composti da controlli standard di Windows sono supportati per lo più automaticamente. Applicazioni con implementazioni di interfaccia utente personalizzata hanno a che fare il lavoro per fornire queste interfacce. Per fortuna, quelli importanti, come i principali browser, hanno fatto il lavoro per sostenere queste interfacce.

Credo che la sua chiamata negli appunti. Ho intenzione di scommettere questi programmi iniettano cliccare e fare doppio clic e tastiera eventi e quindi copiare gli elementi lì per l'ispezione. In alternativa, sono gettin jiggy con i comandi finestre di testo, e afferrando il contenuto in quel modo. Ho il sospetto che a causa di problemi di sicurezza, questi strumenti hanno problemi in esecuzione in vista anche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top