Question

Il y a un appel d'API Win OS ou que laisserait un texte à partir d'obtenir l'écran

non par l'obtention d'un instantané, puis faire OCR, mais via l'API

l'idée est d'obtenir le texte qui est sous la souris que les points d'utilisateur à et clique sur.

Voici comment des outils tels que Babylon ( http://www.babylon.com ) et 1-Click réponses ( http://www.answers.com/main/download_answers_win.jsp ) et bien d'autres travaillent.

Quelqu'un peut me pointer vers la bonne direction pour obtenir cette fonctionnalité?

Était-ce utile?

La solution

Il n'y a aucun moyen direct pour obtenir le texte. Une application pourrait rendre le texte dans un tas de différentes façons (Windows API étant l'un d'entre eux), et après cela a rendu -. Il est juste un tas de pixels

Une méthode que vous pouvez essayer est cependant de trouver la fenêtre directement sous la souris et essayer d'obtenir le texte de leur part. Cela fonctionne très bien sur la plupart des contrôles Windows standard (étiquettes, etc., zones de texte) ne fonctionnerait pas sur les navigateurs Internet bien.

Je pense que le mieux que vous pouvez faire est de rendre votre application telle qu'elle prend en charge autant de contrôles (communs) que possible de la manière décrite ci-dessus.

Autres conseils

Vous pouvez obtenir le texte de chaque fenêtre avec l'API GetWindowText. La position de la souris peut être trouvé avec l'API GetCursorPos.

Dans Delphi, vous pouvez utiliser cette fonction (à kudos Peter ci-dessous)

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;

Cordialement,
Lieven

Windows a des API pour les outils d'accessibilité comme les lecteurs d'écran pour les aveugles. (Les nouvelles versions sont également utilisées à d'autres fins, comme l'automatisation de l'interface utilisateur et de test.) Il fonctionne avec de nombreuses applications, même la plupart des navigateurs qui rendent leur propre contenu sans utiliser les commandes standard de Windows. Il ne fonctionnera pas avec toutes les applications, mais il peut être utilisé pour comprendre le texte sous la souris dans la plupart des cas.

L'API actuelle est appelée Microsoft active API d'accessibilité . Comme avec les API modernes, la portée ici est trop large pour les détails ici.

Notez que la documentation pour les deux API est écrit à la fois pour les développeurs la construction d'outils d'accessibilité (comme les lecteurs d'écran), ainsi que pour les développeurs à écrire des applications qui veulent être compatibles avec les outils d'accessibilité.

L'idée de base est qu'un outil d'accessibilité obtient des interfaces COM fournies par la fenêtre de l'application cible (s), et il peut utiliser ces interfaces pour comprendre les commandes et leur texte et la façon dont ils sont liés à la fois logique et dans l'espace. Les applications qui sont composées de contrôles Windows standard sont la plupart du temps automatiquement pris en charge. Applications avec des implémentations de l'interface utilisateur personnalisée doivent travailler pour fournir ces interfaces. Heureusement, les plus importants, comme les navigateurs traditionnels, ont fait le travail pour soutenir ces interfaces.

Je pense que son appelé le presse-papiers. je vais parier ces programmes injectent et double cliquez sur les événements de clic et clavier, puis de copier des éléments là pour inspection. Sinon, ils sont getting jiggy avec les commandes de texte Windows et le contenu saisissant de cette façon. Je soupçonne en raison de problèmes de sécurité, ces outils ont des problèmes en cours d'exécution dans Vista également.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top