Pregunta

Hay una cierta llamada a la API Win OS o por lo que dejaría una obtienen texto de la pantalla

no a través de la obtención de una instantánea y luego hacer OCR en él, sino a través de la API

la idea es conseguir que el texto que se encuentra bajo el ratón que el usuario apunta a y hace clic en.

Esta es la forma en herramientas como Babilonia ( http://www.babylon.com ) y 1-Click respuestas ( http://www.answers.com/main/download_answers_win.jsp ) y muchos otros trabajan.

Puede alguien me punto en la dirección correcta para conseguir esta funcionalidad?

¿Fue útil?

Solución

No hay forma directa de obtener el texto. Una aplicación puede representar el texto en un trillón de diferentes maneras (API de Windows es uno de ellos), y después de que se rindió -. Es sólo un montón de píxeles

Un método que podría intentar sin embargo es encontrar la ventana directamente debajo del ratón y tratar de obtener el texto de ellos. Esto funcionaría bien en la mayoría de los controles estándar de Windows (etiquetas, cajas de texto, etc.) no funcionaría en los navegadores de Internet sin embargo.

Creo que lo mejor que puede hacer es hacer que su aplicación, que es compatible con el mayor número de controles diferentes (comunes) como sea posible de la forma descrita anteriormente.

Otros consejos

Usted puede obtener el texto de cada ventana con la API GetWindowText. La posición del ratón se puede encontrar con la API GetCursorPos.

En Delphi se podría utilizar esta función (felicitaciones a Peter continuación)

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;

Saludos, Lieven

Windows tiene APIs para herramientas de accesibilidad como lectores de pantalla para ciegos. (Las versiones más recientes también se utilizan para otros fines, como la automatización de la interfaz de usuario y las pruebas.) Se trabaja con muchas aplicaciones, incluso la mayoría de los navegadores que hacen su propio contenido sin necesidad de utilizar los controles estándar de Windows. No funcionará con todas las aplicaciones, pero puede ser utilizado para averiguar el texto bajo el ratón en la mayoría de los casos.

El API actual se llama la automatización de Windows API. Que describe cómo hacer esto, en general, está más allá del alcance de una respuesta de desbordamiento de pila, por lo que simplemente he proporcionado un enlace a la documentación.

La API de más edad que fue ampliamente disponible cuando esta cuestión fue publicado primero se denomina Microsoft Active Accessibility API . Al igual que con las API modernos, el alcance aquí es demasiado amplio a los detalles aquí.

Tenga en cuenta que la documentación para ambas API está escrito tanto para los desarrolladores que crean herramientas de accesibilidad (como los lectores de pantalla), así como para los desarrolladores que crean aplicaciones que quieren ser compatible con esas herramientas de accesibilidad.

La idea básica es que una herramienta de accesibilidad consigue interfaces COM proporcionados por la ventana (s) de la aplicación de destino, y se puede utilizar esas interfaces de averiguar los controles y con el texto y cómo están relacionados tanto lógica como espacialmente. Las aplicaciones que se componen de los controles estándar de Windows son compatibles con casi todo automáticamente. Las aplicaciones con las implementaciones de interfaz de usuario personalizados tienen que hacer el trabajo para proporcionar estas interfaces. Afortunadamente, los más importantes, como los navegadores de masas, han hecho el trabajo para apoyar estas interfaces.

creo que es llamado el portapapeles. voy a apostar estos programas inyectan clic y doble clic para eventos y teclado y luego copiar los elementos que hay para su inspección. Como alternativa, se gettin jiggy con los controles de texto ventanas, y agarrando el contenido de esa manera. Sospecho que por motivos de seguridad, estas herramientas tienen problemas para ejecutar en Vista también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top