Steuerelemente lassen sicht nicht auslesen, weil es evtl. gar keine sind?
-
Hallo,
ich möchte gerne bei einem Datenbankfenster mittels WinApi-Funktionen bestimmte Steuerelemente (Die Text enthalten) automatisch auslesen (z.B. die PLZ)
Das Datenbankprogramm selber erlaubt es einem, die Texte zu markieren und in die Windows-Zwischenablage zu kopieren.Um zu testen, ob das Auslesen der Controls über die WinApi-Funktionen überhaupt funktioniert, habe ich mir GetWindowText heruntergeladen.
Damit kann man die Steuerelemente unterhalb des Mauszeigers auslesen bzw. anzeigen lassen. Das funktioniert bei den meisten Programmen auch einwandfrei.Bei dem Datenbankprogramm allerdings nicht, wenn man "vermeintliche" Steuerelemente, die Text enthalten, anklickt, wird auf einmal ein nahezu bildschirmgroßes Feld markiert.
Zum besseren Verständnis der WinApi würde mich interessieren, warum genau man diese Textstellen nicht über die WinApi auslesen kann und natürlich, ob es da eine andere Möglichkeit gibt. Spontan würde mir nur einfallen, daß man den Mauszeiger entsprechend an die Position bewegt, die ausgelesen werden soll.
-
Wahrscheinlich handelt es sich um eine WinForms oder überhaupt managed-Welt-Fenster, das das Rendering komplett selbst übernimmt und intern keine Win32-Fenster mehr verwendet, sondern nur noch ein einziges großes als Rahmen.
-
Ok, aber warum kann man dann den Text in die Zwischenablage kopieren?
-
Äh weil das Programm es implementiert? Gibt ja WinAPI Funktionen, die beliebige Daten in die Zwischenablage kopieren.
-
Mit etwas Glück reagiert das Programm auf die Tab-Taste um zwischen den Feldern zu wechseln. Dann kann man sowas machen: Tab->Strg+A->Strg+C->Zwischenablage auslesen und das immer weiter bis alle Felder ausgelesen sind. Tastenkombinationen per Programm an ein Fenster zu schicken geht recht einfach.
-
Decimad schrieb:
Wahrscheinlich handelt es sich um eine WinForms
WinForms ist reines Win32.
Decimad schrieb:
überhaupt managed-Welt-Fenster, das das Rendering komplett selbst übernimmt
Wenn, dann WPF. Das macht es selber. Hat aber dafür eine Accessibility-Schnittstelle mit deren Hilfe man auch wieder alles auslesen kann.
-
Hast Du Dir das Fenster mal mit Spy++ angeschaut? Dort siehst Du wie es aufgebaut ist.
Fallls es doch WPF ist, dann nimm mal Snoop um nachzuschauen, was deren Inhalt ist..