bernddasbrot2
Goto Top

Inhalt eines fremden Fensters auslesen

Hallo zusammen,

ich versuche gerade ein Programm zu schreiben, das den Inhalt von anderen Fenstern auslesen kann.
Mein Problem ist, dass ich während meiner Suche immer wieder auf die Funktion GetWindowText und die Nachricht WM_GETTEXT komme.
Aber so viel ich damit jetzt rumprobiert habe, und je mehr ich mich über die beiden Arten informiert habe, umso sicherer bin ich mir, dass ich damit nur den Fenstertitel auslesen kann.

Um das Ganze etwas zu verdeutlichen, würde ich gerne bspw. den Inhalt von einer Seite im Internet Explorer automatisch auslesen und in meinem Programm verarbeiten.
(Die Seite mit meinem Programm vom Server selbst anzufordern würde in meinem Fall nicht funktionieren).

Also wie komme ich an den Text in einem fremden Fenster?

Tausend Dank schonmal
Bernd

Content-ID: 137668

Url: https://administrator.de/contentid/137668

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Fitzcarraldo
Fitzcarraldo 08.03.2010 um 15:02:35 Uhr
Goto Top
Hallo Bernd,

immer hilfreich ist es, wenn beim Fragestellen auch die verwendete Sprache erwähnt wird. Nun, welche soll es sein?
[edit] Wer lesen kann, ist natürlich im Vorteil. Wie ich sehe, ist die Frage im Forum für C und C++ gestellt.

Zu Deinem erwähnten Beispiel fällt mir übrigens spontan das Stichwort "Web Scraping" ein. In Perl kann man hierzu zum Beispiel das Toolkit Web::Scraper verwenden.

Einen schönen Gruß,
Fitzcarraldo
BernddasBrot2
BernddasBrot2 09.03.2010 um 06:37:17 Uhr
Goto Top
Hallo Fitzcarraldo,

so weit ich das jetzt mit Web Scraping gesehen habe, läuft das wohl mehr oder weniger drauf raus, die Seiten vom Server erneut anzufragen. Da ich mich aber bei einer Seite anmelden muss, kann ich diese Seiten nicht nochmal mit meinem Programm anfordern, da ich sonst automatisch ausgeloggt würde. Dann müsste ich mich ständig neu einloggen.

Ich hätte vielleicht eher an eine Möglichkeit gedacht, das Fenster direkt auszulesen, indem ich vielleicht irgendwelche Nachrichten abfange, o. ä.
Oder gäbe es da vielleicht eine Möglichkeit die eingehenden Pakete auf einem bestimmten Port abzufangen?

Trotzdem schon mal Danke
Bernd
Fitzcarraldo
Fitzcarraldo 09.03.2010 um 13:39:32 Uhr
Goto Top
Hallo Bernd,

richtig: Web Scraper bzw Screen Scraper agieren wie eigenständige Webbrowser und können auch mit Webseiten kommunizieren. Formulare ausfüllen ist möglich, so dass man möglicherweise auch recht einfach eine Anmeldung hinbekommt. Mir hatte damals mal diese Seite Anregungen gegeben:
http://www.linux-magazin.de/Heft-Abo/Ausgaben/2004/03/Datenruessel

Eingehende Pakete abfangen ist auch möglich. Jeder Netzwerksniffer kann das schließlich auch. Das wird dann aber womöglich ein größeres Projekt. Aus den wenigen Eckgrößen, die Du zu Deinem Projekt angibst, vermute ich, dass Du Dich nicht unbedingt mit Netzwerkprotokollen beschäftigen möchtest, sondern auf der Suche nach einer Lösung bist, die einfach das macht, was sie macht, ohne besonders elegant zu sein.

Wenn Du unter Windows über die GUI anderer ausgeführter Programme arbeiten möchtest, also eine Bastellösung auch schon reicht, dann könnte es vielleicht auch über ein AutoIt-Skript gehen. Auf die Schnelle finde ich hierzu zu Beispiel diesen Link:
http://www.autoit.de/index.php?page=Thread&threadID=17796

Und jetzt mache ich gerne die Bahn frei für Lösungsvorschläge der C und C++-Profis. Denn auf diese Sprachen bezieht sich die Frage ja eigentlich. Es war eher Zufall, dass ich in diesen Thread gestolpert bin und ich bin in dieser Ecke auch nicht gut augehoben face-wink

Vielleicht lässt sich das auch über eine OCR-Bibliothek leicht lösen?

Grüße,
Fitzcarraldo
BernddasBrot2
BernddasBrot2 09.03.2010 um 14:34:04 Uhr
Goto Top
Danke, für die Antwort.

Ja, eine Bastellösung wäre schon genug für mich. Allerdings hätte ich auch kein Problem damit, mich mit Protokollen auseinanderzusetzen, um die Pakete abzufangen. Da wäre ich schon ziemlich froh, wenn mir jemand einen Anhaltspunkt geben könnte, in welche Richtung ich da suchen muss, wäre das schon mal nicht schlecht. Auch wenn's dann aufwendiger wird, wäre kein Problem, schließlich lernt man ja mit der Herausforderung ;)

Gruß
Bernd
Fitzcarraldo
Fitzcarraldo 09.03.2010 um 15:13:17 Uhr
Goto Top
Nun, Bernd,

dass Du die Herausforderung suchst, gefällt mir. Ich würde dann mal einen Blick auf die Packet Capture Library (PCAP) werfen.

Viel Erfolg!

Grüße,
Fitzcarraldo
BernddasBrot2
BernddasBrot2 10.03.2010 um 00:05:50 Uhr
Goto Top
Vielen Dank,
das hat mir viel geholfen. Ich denke jetzt komme ich klar.

Grüße,
Bernd