So erhalten Sie Textinhalte aus einem Fenster

Ich habe ein Fenster, in dem ein Buch angezeigt wird. In zwei kleineren Feldern unten finden Sie Informationen zu Seitenzahl und Volumen des geöffneten Buches. Ich kann diese Informationen leicht wie folgt erhalten:

ControlGetText, volume, ThunderRT6TextBox3      
ControlGetText, page, ThunderRT6TextBox2

Dann bewegt mein Skript meinen Mauszeiger auf eine Schaltfläche. Es klickt darauf und ein neues Fenster öffnet sich. In diesem Fenster befinden sich weitere Textinformationen zum Buch, z. B. Herausgeber, Name des Autors, Auflage usw. Ich möchte diese Informationen abrufen. Aber wenn ich die gleiche Strategie versuche, funktioniert sie nicht, zB:

ControlGetText, data, RichTextWndClass3

Der einzige Unterschied zwischen den beiden Fällen besteht darin, dass diese beiden kleinen Felder bearbeitet werden können. Sie können Text eingeben, während dieses Fenster statisch ist.

Ich habe viele andere Möglichkeiten ausprobiert, wie zum Beispiel:SendEvent ^a Welches ist gleichbedeutend mit Steuerung + a, die alles auswählen sollte. Ich habe versucht, Pausen einzulegen, aber es wurde nie ausgewählt. Ich habe versucht, das Skript manuell auf dieses Fenster zu doppelklicken. Es funktioniert und ein Wort wird so ausgewählt. Auch dann macht SendEvent ^ a nichts. Wenn ich jedoch SendEvent ^ {Einfügen} mache, wird das ausgewählte Wort in meine Zwischenablage kopiert.

Ich habe mit mehr Kombinationen experimentiert:

ControlSend ahk_class ThunderRT6FormDC, ^a
ControlSend ClassNN RichTextWndClass3, ^a

und

ControlSend ThunderRT6FormDC, ^a
ControlSend RichTextWndClass3, ^a

Keiner von ihnen funktioniert. Die gesamte Textauswahl wird in diesem Fenster nicht angezeigt.

Die einzige Alternative für mich ist, das Skript den gesamten Text manuell auswählen zu lassen. Dies ist jedoch langsam und sehr lächerlich. Darüber hinaus ist in Window Spy unter dem Abschnitt: Sichtbarer Fenstertext der gesamte Text vorhanden. Ich habe viele andere Möglichkeiten ausprobiert und bin am Ende meines Verstandes. Wie soll ich diesen Text direkt ernten?

EDIT-- Der Text des Fensters wird in Window Spy unter der Überschrift: TitleMatchMode = slow Visible Text angezeigt, NICHT unter der Überschrift: Visible Window Text

EDIT-- Ich habe mit Ihnen über zwei Fenster gesprochen. Das erste, in dem ich Volumen und Seitenzahl erhalte. Die zweite, die per Knopfdruck auftauchen muss. Beide Fenster haben denselben Klassennamen: ahk_class ThunderRT6MDIForm Ist das in irgendeiner Weise problematisch?

EDIT-- Die Schlussfolgerung ist, dass es mir unmöglich ist, diesen Text direkt aus dem zweiten Fenster zu erhalten. Als solches habe ich mich für die lahme, langweilige manuelle Methode entschieden. Ich sende eine {Verschiebung nach unten} zum aktiven Fenster und mache dann einen Klick am unteren Rand des Fensters. Dann speichere ich die Auswahl in meiner Zwischenablage. Es funktioniert, aber es ist einfach nur dumm. Bitte helfen Sie mir, eine elegantere Lösung als diese zu finden.

Dies ist der Code, den ich verwendet habe:

ControlGetText, volume, ThunderRT6TextBox3 

ControlGetText, page, ThunderRT6TextBox2 

Click, 110, 70 

sleep 1000

SendInput {shift down}

click 29, 490

SendInput {shift up}

sleep 1000

SendInput, ^{ins} 

sleep 100

Es ist lustig zu bemerken, dass echte Tastaturtasten wie a b c nicht möglich sind. Aber ich kann ein Ctrl, Shift und ein Ins senden. Wie ich oben angemerkt habe, gab ^ c auch Probleme, genau wie ^ a Probleme gab.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage