Wie Textbox eines Fremdprogramms auslesen

21/01/2010 - 13:05 von Klaus Mayer | Report spam
Hi,
ich möchte in Google Maps eine Ortsmarke setzen.
Dazu öffnet sich ein Fenster, in welchem in 2 Textboxen die Latitude-
und Longitude-Werte stehen.
Mit FindWindowByCaption bekomme ich ja den Handle des Fensters.
Aber wie bekomme ich den Handle und die Werte der beiden Textboxen?
Hab schon alles Mögliche mit FindWindowEx probiert, leider erfolglos.

Für Eure Tipps dankend,

Klaus
 

Lesen sie die antworten

#1 Konrad Neitzel
21/01/2010 - 13:43 | Warnen spam
Hallo Klaus,

das auslesen von fremden Fenstern kann man nicht immer klar vorhersagen.
Nach meiner Erfahrung hilft es aber immer, sich einmal das Fenster über
Tools wie Spy++ anzusehen.

Glücklicherweise nutzen die Entwickler meist immer die üblichen
Controls, so dass man auch mit den üblichen Nachrichten die Daten
abfragen kann.

Was man in Tools wie Spy++ immer gut sehen kann ist auch die
Hirarchie-Struktur in einem Fenster. Die paar Fenster, die ich auslesen
/ analysieren musste, hatten eine interne Struktur, durch die ich immer
erst durch bin. (Also Child-Fenster auflisten und dann vom
entsprechenden Child Fenster aus weiter geschaut.)

Von einer TextBox (So es eine normale TextBox ist) würde ich erwarten,
dass es auf WM_GETTEXT entsprechend antwortet.

Also wàre das dann in etw folgendes:
- Fenster finden (Das hattest Du ja schon entsprechend gemacht.)
- Durch die Struktur helfen dir FindWindow(Ex). Oder eben
EnumChildWindows zur Auflistung aller Children
- Dann WM_GETTEXT / WM_GETTEXTLENGTH sollten die Nachrichten am Ende
sein.

Ich selbst habe keine Erfahrung mit dem Auslesen von TextBox-Controls.
Den Titel eines Fensters bekommt man so, daher ist es wahrscheinlich,
dass dies bei dem WM_GETTEXT ebenso ist. Bei dem Auslesen einer ListBox
musste ich über OpenProcess / VirtualAllocEx Speicher reservieren und
dann das Ergebnis am Ende per ReadProcessMemory kopieren.

Links:
- Die einzelnen genannten Funktionen finden sich in der msdn library
beschrieben
- http://pinvoke.net hilft bei den Definitionen in C#
- CWindow bei Codeproject ist evtl. auch interessant:
http://www.codeproject.com/KB/dialog/CWindow.aspx

Ich hoffe, ich konnte etwas helfen.

Mit den besten Grüßen,

Konrad

Ähnliche fragen