Entwickler-Ecke
Windows API - Textfeld in externem Fenster auslesen?
Blubb87 - So 04.05.08 19:03
Titel: Textfeld in externem Fenster auslesen?
Hallo,
Ich will ein Programm schreiben, dass aus einem externen Fenster ein Textfeld ausliest.
Ich hab schon ein bisschen rumgebastelt und kann jetzt mit hMsgBox := FindWindow(NIL, Fenstercaption ); das richtige Fenster auswählen. (Wofür steht der Parameter NIL?)
Jetzt weiß ich aber leider nicht wie ich an den Inhalt der Textbox komme. Bin Absoluter Neuling in dem Bereich und über jede Hilfe dankbar.
Vielen Dank schonmal
toms - So 04.05.08 21:57
Hallo,
Nil bedeutet hier, dass der Klassenname keine Rolle spielt.
D.h es wird nicht überprüft, ob der Klassenname übereinstimmt.
An den Text kommst du so: Sende eine Nachricht WM_GETTEXT ans Control.
Wie geht das? Einfach mal im Forum suchen oder Googlen.
Blubb87 - Di 06.05.08 00:41
Hallo,
Danke erst einmal für die schnelle Info.
Ich habe sofort mal rumprobiert und als Rückgabe von SendMessage(hParent, WM_GETTEXT, 0, 0) immer "0" bekommen.
Ich konnte leider nicht herausfinden was ich mit den letzten beiden Parametern machen muss. (
http://msdn.microsoft.com/en-us/library/ms632627(VS.85).aspx hab ich leider nicht verstanden)
Später habe ich dann ein Script gefunden, das mit diese Parameter raussucht (
http://entwickler-forum.de/showthread.php?t=37239), aber als Rückgabe kriege ich jetzt statt des Textfeldinhalts den Titel des Fensters.
Kann nochmal jemand helfen?
Danke!
Blubb87 - Di 06.05.08 11:52
Hi Toms,
Ich habe beide Codeschnipsel aus deinem Link ausprobiert und wieder beide male nur die Fenstercaption erhalten. Ich glaube nicht, dass es ein Codeproblem ist sondern viel eher ein Denkproblem. Wahrscheinlich hab ich den Sinn der Funktion oder der Handle-Variable falsch verstanden.
Die Handle-Var bestimme ich im momement mit MyHandle = FindWindow(NIL, Fenstercaption );
Da MyHandle <> 0 ist dachte ich, dass das klappt. Ist das denn überhaupt richtig?
Edit:
Ich hab mit dem Winspector auf dem Fenster ein RichEditfeld gefunden, was ich auch auslesen kann mit FindWindowEx(aHandle,0, 'RichEdit20W',nil); und SendMessage(aHandle, WM_GETTEXT,...
Ein erstes Erfolgserlebnis :)
Das Problem ist nur, dass ich nicht dieses RichEditfeld(Chat-Eingabe) auslesen will, sondern die Chathistory, also das Ausgabefenster darüber. Leider wird außer dem RichEditfeld nichts weiter vom Winspector gefunden.
Hat jemand ne Idee?
toms - Di 06.05.08 13:38
Hast du das Control mit "Fenster auswählen ausgewählt"?
Blubb87 - Di 06.05.08 13:48
Ja genau!
toms - Di 06.05.08 15:50
Um welche Anwendung handelt es sich denn?
Vielleicht kann ich es mir dann mal anschauen
Blubb87 - Di 06.05.08 17:23
Es handelt sich um ein Spielfenster mit Chatfunktion.
Das Einzige, was man jedoch mit WinSpy oder Winspector finden kann ist das Chat-Eingabefeld. Ich brauche jedoch das Ausgabefeld.
Gibt es einen Trick, wie man vielleicht doch noch an die Chathistory kommt? Vielleicht den Arbeitsspeicher direkt anzapfen oder so? Hab davon leider keine Ahnung. Hab nur mal gehört dass man die Zellen, wo etwas gespeichert wird herausfinden kann indem man nach einen String sucht.
Blubb87 - Sa 10.05.08 06:33
Keine Ideen?
toms - Sa 10.05.08 07:26
Blubb87 hat folgendes geschrieben: |
| Keine Ideen? |
Wenn du sie nicht finden kannst, sind es keine Standard Controls. D.h sie haben keine Windows Handle.
Blubb87 - Sa 10.05.08 09:22
toms hat folgendes geschrieben: |
| Wenn du sie nicht finden kannst, sind es keine Standard Controls. D.h sie haben keine Windows Handle. |
Soll heißen - ich komme mit Windows API nicht weiter oder?
Ist es möglich das Textfeld trotzdem irgendwie auszulesen? (Wenn ja... Wie?)
toms - Do 15.05.08 20:17
Blubb87 hat folgendes geschrieben: |
toms hat folgendes geschrieben: | | Wenn du sie nicht finden kannst, sind es keine Standard Controls. D.h sie haben keine Windows Handle. |
Soll heißen - ich komme mit Windows API nicht weiter oder?
Ist es möglich das Textfeld trotzdem irgendwie auszulesen? (Wenn ja... Wie?) |
Vielleicht schon. Aber ich kann es leider nicht testen, da ich nicht weiß, um welches Programm es sich handelt.
jackie05 - Fr 29.08.08 21:25
Hallo,
ich weiss, dieser Thread ist schon 3 Monate alt, aber wenn es sich um
http://www.knuddels.de handelt, dann kannst du das erstmal vergessen über WinApi die Nachrichten auszulesen, da das ganze über Canvas gezeichnet wird.
MfG
Blubb87 - Sa 30.08.08 14:23
Es handelt sich um einen Spielportal, wo ich die History aus dem Chat auslesen will.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!