GetWindowText und IAccessible funktionieren nicht mit DirectUIHWND.

27/07/2008 - 18:56 von Jens Müller | Report spam
Hallo,
Aufgabe sei der Text der Messagebox zu extrahieren, die erscheint, wenn man
unter Vista in Start, Ausführen eine nicht existierende Datei eingibt ("xx"
konnte nicht gefunden werden...).

Der normale Weg über GetWindowText hilft nicht weiter, es handelt sich um
die Fensterklasse "DirectUIHWND" ohne Text.
Mein Versuch über
Dim pkt As POINTAPI, v As Variant, objAccessible As Object
Call GetCursorPos(pkt)
AccessibleObjectFromPoint(pkt.x, pkt.y, objAccessible, v)

objAccessible ist zwar nicht Nothing, aber objAccessible.accValue(v) bringt
den Fehler:
Die Methode 'accValue' für das Objekt 'IAccessible' ist fehlgeschlagen.

Die Software Accexplorr schafft es jedoch, von dem Punkt unter dem
Mauszeiger den Text auszulesen.

Eventuell muss man über die Parents des objAccessible iterieren um irgendwie
an ein anderes Kind zu kommen, jedoch ist mir die Baumstruktur nicht
wirklich klar.

Hat jemand schon erfolgreich den Text eines DirectUIHWND unter dem
Mauszeiger auslesen können?

Vielen Dank.
 

Lesen sie die antworten

#1 Juergen Thuemmler
28/07/2008 - 01:00 | Warnen spam
objAccessible ist zwar nicht Nothing, aber objAccessible.accValue(v)
bringt den Fehler:
Die Methode 'accValue' für das Objekt 'IAccessible' ist fehlgeschlagen.



Es gibt die Eigenschaften
objAccessible.accName(v)
objAccessible.accValue(v)
objAccessible.accDescription(v)
objAccessible.accRole(v)
objAccessible.accState(v)
und weitere. In Deinem Fall ist objAccessible.accName(v) interessant.
Und in VB sollte man eine Fehlerbehandlung der Art "On Error Resume Next"
einbauen, wenn man diese Eigenschaften der Reihe nach abfragt.

Jürgen.

Ähnliche fragen