Laden...

Text eines Controls unbekannten Typs auslesen

Erstellt von nahda vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.567 Views
N
nahda Themenstarter:in
25 Beiträge seit 2006
vor 17 Jahren
Text eines Controls unbekannten Typs auslesen

Hallo,

ich schreibe gerade an einem Programm, welches den Text aus einem Control eines anderen Programms auslesen soll.
Das Problem ist, dass das Control funktioniert und aussieht wie eine ListBox, aber nicht auf die zugehörigen API Commands (LB_xxx) reagiert. Ich hab auch schon andere mir bekannten Kommandos für TextBoxen, ListViews etc. ausprobiert, aber ebenfalls keine Reaktion.
Gibt es irgendeinen Weg das Control weitergehen zu analysieren oder z.b. einfach sämtlichen Unicode-Text zu extrahieren. Ich habe auf dem Gebiet leider gar keine Ahnung, vielleicht hat hier ja jemand eine Idee.

mfg
nahda

230 Beiträge seit 2007
vor 17 Jahren

_Original von nahda_Gibt es irgendeinen Weg das Control weitergehen zu analysieren oder z.b. einfach sämtlichen Unicode-Text zu extrahieren. Ich habe auf dem Gebiet leider gar keine Ahnung, vielleicht hat hier ja jemand eine Idee.

Das merkt man das du keine Ahnung hast! Ist nicht zu überlesen!
Zu deinem Problem: Wie heißt die Anwendung die du capturen willst? Du kennst Spy++?

//Edit001: Hervorhebung des Textes mit rot rückgängig gemacht.

N
nahda Themenstarter:in
25 Beiträge seit 2006
vor 17 Jahren

Ja, ich kenne Spy++, das ist aber nur für Windows Forms geeignet, so wie ich das sehe. Ansonsten kenne ich noch Winspector Spy, das hilft mir aber auch nicht sonderlich weiter. Die Anwendung ist der FullTiltPoker Client (http://www.fulltiltpoker.com). Man kann sich die gedealten Karten im Chat Fenster anzeigen lassen. Ich möchte diese dann auslesen und mir verschiedene Wahrscheinlichkeiten berechnen lassen...

*edit* Ach ja, Winspector Spy gibt als Typ "FTCChat" aus, also nicht sonderlich hilfreich.

J
3.331 Beiträge seit 2006
vor 17 Jahren

Hallo nahda,

mit Delphi 5 wurde WinSight.exe mitgeliefert; es scheint sich um ein Tool von Borland gehandelt zu haben. Damit kann man zumindest den Typ eines jeden Fensters (also auch von Controls) untersuchen.

Gruß Jürgen

@sarabande
Ich empfehle Dir, einen Kursus an einer VHS über gutes Benehmen zu belegen. Wenn nahda schon angibt, dass er keine Ahnung hat, gibt es keinen Grund, in einem solchen Ton nachzutreten.

@nahda Nachtrag
Inzwischen habe ich Deinen neuen Beitrag gelesen. Wenn Du auf API-Funktionen aus bist, müssten doch Win-Untersuchungen helfen?!

6.862 Beiträge seit 2003
vor 17 Jahren

Spy++ bzw. Spy gabs schon Jahre bevor überhaupt an .Net zu denken war 🙂 Damit bekommst du alle Fensterhandels raus. Prob ist halt das nicht alles einfache Handles sind. Gerade bei grafischen Sachen wenn man selber zeichnet, gibts kaum Handles für die einzelnen Elemente.

Baka wa shinanakya naoranai.

Mein XING Profil.

230 Beiträge seit 2007
vor 17 Jahren

Wenigstenst bist du nicht empfindlich. Das ist schon mal sehr gut!

Original von nahda
Ja, ich kenne Spy++, das ist aber nur für Windows Forms geeignet, so wie ich das sehe. Hier verzapfst du schon wieder kompletten Unsinn!

Original von nahda
(
>
). Man kann sich die gedealten Karten im Chat Fenster anzeigen lassen. Ich möchte diese dann auslesen und mir verschiedene Wahrscheinlichkeiten berechnen lassen... Läuft die Anwendung auf einem Betriebssystem von Microsoft?

//Edit001: Hervorhebung des Textes mit rot und grün rückgängig gemacht.

6.862 Beiträge seit 2003
vor 17 Jahren

Hey, jetzt reichts aber echt. Mäßige dich im Ton, gibt echt keinen Grund so aggresiv/böse zu antworten.

Baka wa shinanakya naoranai.

Mein XING Profil.

N
nahda Themenstarter:in
25 Beiträge seit 2006
vor 17 Jahren

Erstmal an alle: Es tut mir leid, dass ich eine fatale Fehlbehauptung bezüglich Spy++ aufgestellt habe, ich nehme alles zurück und behaupte das Gegenteil 😉.Mir ist beim googlen ein Fehler unterlaufen.
Habe das Tool jetzt gefunden und auch schon eingesetzt - es liefert mir etwa die gleichen Infos, wie Winspector Spy.

@juetho: Was ist eine Win-Untersuchung, bzw. wie funktioniert sie?
@sarabande: Ja, die Andwendung läuft auf allen aktuellen Betriebssystemen von Microsoft.
@talla: Das Handle kriege ich übrigens raus.

230 Beiträge seit 2007
vor 17 Jahren

Original von nahda
Erstmal an alle: Es tut mir leid, dass ich eine fatale Fehlbehauptung... Und ich entschuldige mich hiermit für mein rüppelhaftes verhalten! Sorry, es war nicht meine Absicht, dich zu kränken!

N
nahda Themenstarter:in
25 Beiträge seit 2006
vor 17 Jahren

Ich akzeptiere deine Entschuldigung bezüglich deines rüpelhaften Verhaltens 😉. Wie auch immer - falls es hilft - ich hab ein bisschen mit dem Meldungsprotokoll von Spy++ rummgepielt. Allerdings kriege ich nur die ganzen darstellungsrelevanten Sachen (WM_PAINT, Mausklicks, Mausposition etc.) angezeigt. Gibts mit Spy++ eine Möglichkeit die ganzen Api-Funktionen des Controls (ist das überhaupt der richtige Begriff oder soll ich Handle oder sonstwas sagen?) rauszufinden?

230 Beiträge seit 2007
vor 17 Jahren

Original von nahda
Ich akzeptiere deine Entschuldigung bezüglich deines rüpelhaften Verhaltens 😉. Wie auch immer - falls es hilft - ich hab ein bisschen mit dem Meldungsprotokoll von Spy++ rummgepielt. Allerdings kriege ich nur die ganzen darstellungsrelevanten Sachen (WM_PAINT, Mausklicks, Mausposition etc.) angezeigt. Gibts mit Spy++ eine Möglichkeit die ganzen Api-Funktionen des Controls (ist das überhaupt der richtige Begriff oder soll ich Handle oder sonstwas sagen?) rauszufinden?

Du kriegst jetzt mal nen ganz heissen Tipp von einem abgewichsten P-Hasen.
Viele kleine Schritte führen zu dem gewünschten großen Ziel!
In deinem Fall bedeutet das, dass du dir eine ganz simple Form mit C# bastelst und ein Textcontrol da drauf legst. Da schreibst du was rein wie z. B.: "Ich hasse abgewichste P-Hasen! Versorge auch die Form.Text = "Mein erstes gecapturtes Program";
Dann den Desktop putzen, soll heissen, alle Anwendungen schliessen. Danach deine TestForm, dann Spy++ starten. Tastenkombination <STRG+W> in Spy++ drücken. Danach <STRG+S> drücken.
Den gespeicherten Fenster Output von Spy++ ausdrucken. Tasse Kaffee kochen und Textmarker zuhand nehmen und alle deiner Form relevanten Handles markieren. Damit ich dir weiterhin helfen kann brauche ich die selbe Umgebung. Also machst du ein Upload von deiner TestForm. und ich kann mir das auch in Spy++ anschauen. So haben wir eine gemeinsame Diskussionsgrundlage

Wenn du das schon alles kannst mußt du Bescheid geben!

F
722 Beiträge seit 2005
vor 17 Jahren

Original von sarabande
Du kriegst jetzt mal nen ganz heissen Tipp von einem abgewichsten P-Hasen.

Ohne Worte...lol

N
nahda Themenstarter:in
25 Beiträge seit 2006
vor 17 Jahren

An einer gemeinsamen Diskussionsgrundlage solls nicht scheitern...
Vielleicht sollten wir das dann aber in irgendeinem IM oder VoiceChat durchgehen, falls es sehr umfassend wird?

230 Beiträge seit 2007
vor 17 Jahren

Ich habe mir den Thread nochmals durchgelesen und habe folgende Aufgabe für Dich:
**Ermittle mit C++ und den API "Funktionen FindWindow" und "FindWindowEx" das Fenster-Handle der Fom und der TextBox. ** Du kannst auch die callback Funktionen "EnumWindows" und "EnumChildWindows" verwenden.

Warum C++? Hochsprache Nummer 1 ist, wenn man unter der Haube von Windows im geschützten Adressraum eines fremden Assembly im Code rumfummelt, - C++.

Hast recht, dieses Thema ist hier Offtopic. Ich bin zwar den ganzen Tag online, aber nicht ständig verfügbar. Ich schlage daher vor, es mit dem Medium der privaten Nachrichten in diesem Forum zu versuchen. Chat ist nicht so mein Ding.

//Edit001: Hervorhebung des Textes mit rot rückgängig gemacht.
//Edit002: EnumWindowsProc durch EnumChildWindows ersetzt

N
nahda Themenstarter:in
25 Beiträge seit 2006
vor 17 Jahren

Ich habe mich heute den ganzen Tag mit dem Thema auseinandergesetzt. Ich habe zwei Verständnisfragen:

Ich habe also ein Textcontrol, welches nicht auf "gewöhnliche" Api Messages, wie z.B. WM_GETTEXTLENGTH, WM_GETTEXT anspricht (ein weiteres Beispiel dafür wäre das Textfeld von MS Word). Daraus leite ich ab, dass es eigene interne Messages benutzt.
Jetzt frage ich mich:

  1. Wenn ich die Api Messages mit Spy++ analysiere - kann ich dann die Message finden, die dem Control "neuen" Text "schickt" und das ganze mit einem Hook abfangen und somit an den Text kommen?

  2. Kann ich vielleicht auch einfach das Message-Perdant des Controls zu den oben genannten Standart-Messages finden und damit bsp. wie bei einer TextBox mit SendMessage und WM_GETTEXT den Text bekommen?

Wie gesagt bin ich nicht vertraut mit den ganzen API Geschichten. Vielleicht kann mir jemand weiterführende Literatur zum Einstig empfehlen?

230 Beiträge seit 2007
vor 17 Jahren

Original von nahda
Wie gesagt bin ich nicht vertraut mit den ganzen API Geschichten. Vielleicht kann mir jemand weiterführende Literatur zum Einstig empfehlen?

Es reicht aus das Forum zu durchsuchen. Es gibt eine Fülle an Quellcode Beispielen in diesem Forum!