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
_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.
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.
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?!
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.
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.
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.
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.
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!
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?
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!
Original von sarabande
Du kriegst jetzt mal nen ganz heissen Tipp von einem abgewichsten P-Hasen.
Ohne Worte...lol
An einer gemeinsamen Diskussionsgrundlage solls nicht scheitern...
Vielleicht sollten wir das dann aber in irgendeinem IM oder VoiceChat durchgehen, falls es sehr umfassend wird?
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
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:
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?
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?
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!