Frage

Es gibt einige Win OS API-Aufruf oder so ein, dass würde lassen Text auf dem Bildschirm erhalten

nicht über einen Snapshot zu erhalten und dann tut OCR drauf, aber über API

Die Idee ist, den Text zu erhalten, die unter der Maus ist, dass der Benutzer auf und klickt auf.

Dies ist, wie Tools wie Babylon ( http://www.babylon.com ) und 1-Click Antworten ( http://www.answers.com/main/download_answers_win.jsp ) und viele andere arbeiten.

Kann mir jemand auf die richtige Richtung weisen diese Funktionalität zu erhalten?

War es hilfreich?

Lösung

Es gibt keine direkte Möglichkeit, Text zu erhalten. Eine Anwendung Text in zig verschiedenen Arten machen könnte (Windows API ist einer von ihnen), und nachdem es gemacht wird -. Es ist nur ein Haufen von Pixeln

Eine Methode, die Sie jedoch versuchen könnten, ist das Fenster direkt unter der Maus zu finden und zu versuchen, den Text von ihnen zu erhalten. Dies würde auf den meisten Standard-Windows-Kontrollen funktionieren (Etiketten, Textboxen, etc.) würde allerdings auf Internet-Browsern nicht funktionieren.

ich glaube, das Beste, was Sie tun können, ist Ihre Anwendung so, dass es so viele verschiedene (häufig) Kontrollen wie möglich in der oben beschriebenen Art und Weise unterstützt.

Andere Tipps

Sie können den Text von jedem Fenster erhalten mit der GetWindowText API. Die Mausposition mit dem GetCursorPos API.

In Delphi können Sie diese Funktion verwenden (ein dickes Lob an Peter unten)

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;

Grüße, Lieven

Windows verfügt über APIs für Eingabehilfen wie Bildschirmlesegeräte für Blinde. (Neuere Versionen sind auch für andere Zwecke, wie UI Automatisierung und Testen verwendet.) Es arbeitet mit vielen Anwendungen, auch die meisten Browsern, die ohne Verwendung des Standard-Windows-Steuerelemente ihre eigenen Inhalte zu machen. Es wird nicht mit allen Anwendungen funktionieren, aber es kann den Text unter der Maus in den meisten Fällen, um herauszufinden, verwendet werden.

Die aktuelle API wird die Microsoft Active Accessibility API . Wie bei dem modernen APIs ist der Umfang hier zu breit zum Detail hier.

Beachten Sie, dass Dokumentation für beide APIs geschrieben wird sowohl für beide Entwickler bauen Zugänglichkeit Tools (wie Screen-Reader) sowie für Entwickler Schreiben Anwendungen, die mit den Eingabehilfen kompatibel sein soll.

Die Grundidee ist, dass ein Zugänglichkeit Werkzeug wird durch das Ziel bereitgestellt COM-Schnittstellen Anwendungsfensters (s), und es kann diese Schnittstellen verwenden, um die Kontrollen herauszufinden und ihren Text und wie sie beide logisch zusammenhängenden und räumlich. Anwendungen, die von Standard-Windows-Kontrollen bestehen meist automatisch unterstützt. Anwendungen mit benutzerdefinierter UI-Implementierungen haben Arbeit zu tun, um diese Schnittstellen zur Verfügung zu stellen. Glücklicherweise ist die wichtige, wie der Mainstream-Browser, hat die Arbeit getan, um diese Schnittstellen zu unterstützen.

Ich denke, es ist die Zwischenablage genannt. ich gehe diese Programme wetten injizieren klicken und doppelklicken Sie & Tastatur-Ereignisse und dann Elemente kopieren dort zur Inspektion. Alternativ werden Gettin sie jiggy mit den Fenstern Text-Steuerelemente und Inhalte greifen auf diese Weise. Ich vermute, dass aufgrund von Sicherheitsproblemen, diese Tools haben Probleme in Vista auch hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top