Autor |
Beitrag |
Blubb87
Hält's aus hier
Beiträge: 9
|
Verfasst: So 04.05.08 19:03
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
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: 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 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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. ( msdn.microsoft.com/e...ms632627(VS.85).aspx hab ich leider nicht verstanden)
Später habe ich dann ein Script gefunden, das mit diese Parameter raussucht ( entwickler-forum.de/...wthread.php?t=37239), aber als Rückgabe kriege ich jetzt statt des Textfeldinhalts den Titel des Fensters.
Kann nochmal jemand helfen?
Danke!
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Di 06.05.08 05:39
Im Forum findest du genügend Beispiele. z.B
www.delphi-forum.de/....php?p=142791#142791
|
|
Blubb87 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Di 06.05.08 12:57
Lade meinen WinSpy runter www2.delphi-forum.de/download.php?id=8533
Damit kannst du das richtige Control finden und auch direkt den FindWindow-Code erzeugen lassen.
|
|
Blubb87 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 06.05.08 13:20
Leider zeigt WinSpy auch nur das eine RichEditFeld an: [url= img501.imageshack.us...hp?image=spyny1.jpg] [/URL]
Gibt es sonst noch Möglichkeiten an die Ausgabe zu kommen?
Vielen Dank erstmal für die vielen, schnellen Hilfen!
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Di 06.05.08 13:38
Hast du das Control mit "Fenster auswählen ausgewählt"?
|
|
Blubb87 
Hält's aus hier
Beiträge: 9
|
Verfasst: Di 06.05.08 13:48
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Di 06.05.08 15:50
Um welche Anwendung handelt es sich denn?
Vielleicht kann ich es mir dann mal anschauen
|
|
Blubb87 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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 
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 10.05.08 06:33
|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: 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 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: 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
      
Beiträge: 357
|
Verfasst: Fr 29.08.08 21:25
Hallo,
ich weiss, dieser Thread ist schon 3 Monate alt, aber wenn es sich um www.knuddels.de handelt, dann kannst du das erstmal vergessen über WinApi die Nachrichten auszulesen, da das ganze über Canvas gezeichnet wird.
MfG
|
|
Blubb87 
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 30.08.08 14:23
Es handelt sich um einen Spielportal, wo ich die History aus dem Chat auslesen will.
|
|