Autor Beitrag
Quetzal90
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 01.07.10 00:45 
Hi

Ich habe einen Prozess gehookt, der mehrere Fenster hat in denen ich Abfange was geschrieben wird mittels DrawTextEx und ExtTextOut. Das klappt so weit, nur wie kann ich die Daten den jeweiligen Fenstern zuordnen?
Mein Versuch war mittels des DeviceContexts den die beiden Funktionen ja brauchen. Den krieg ich, nur wenn ich mit WindowFromDC das entsprechende Fenster suche gibt die Funktion 0 zurück. Gibt es eine andere Möglichkeit herauszufinden in welchem Fenster etwas geschrieben wurde? Die Funktionen geben auch die Koordinaten aus wo der Text geschrieben wird und zwar relativ zur oberen linken ecke des jeweiligen Fensters. Woher weiß die Funktion denn dann relativ zu welcher Fensterecke sie schreiben muss wenn das DC scheinbar nicht zu einem bestimmten Fenster gehört?

Bin für jeden Hinweis dankbar ;)
Quetzal
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Do 01.07.10 15:34 
Ein DC inkludiert nicht immer ein Window!
Schau doch einfach mal ins MSDN: msdn.microsoft.com/e...71%28v=VS.85%29.aspx

_________________
Debuggers don't remove bugs, they only show them in slow-motion.
Quetzal90 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 01.07.10 23:59 
Hi und Danke für die Antwort.

Ich hab WindowFromDC ja aus dem MSDN... und da steht auch dass es wenn es 0 zurückgibt kein window dazu hat.
Nur wie kann ich sonst auf das Fenster schließen? ExtTextout bezieht sich ja schließlich bei den Koordinaten auch genau auf die linke obere Ecke des Fensters. Irgendwo muss doch noch eine Verbindung sein?

Was gibt es sonst für Möglichkeiten?

Danke :)
Quetzal
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Fr 02.07.10 00:23 
Wenn WindowFromDC Null liefert, gibt es kein Window => Keine Möglichkeit!

_________________
Debuggers don't remove bugs, they only show them in slow-motion.
Quetzal90 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 02.07.10 14:03 
Ja schon klar, wenn man das so ganz eng sieht und die Fenster unbedingt direkt über das Handle identifizeren möchte..
Woher weiß ExtTextOut denn an welche stelle auf dem gesamten Bildschirm es schreiben muss, wenn es nur die Koordinaten relativ zur ecke des Fensters hat? gibts informationen über ein DC wo es sich befindet oder sowas?

Ansonsten unterscheiden sich die DCs die bei verschiedenen fenster gebraucht werden hab ich festgestellt, wenn ich jetzt erst eins öffne und zu einem bestimmten Text in meinem Hauptprogramm das/die DC speichere müsste ich alles mit DrawTextEx und ExtTextOut geschriebene doch eigentlich zuordnen können.. dann könnte man das nächste Fenster öffnen und wieder erst alle DCs speichern.. Nur so ne Idee, ich probiers mal ;)

schöne Grüße,
Quetzal
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Fr 02.07.10 16:15 
user profile iconQuetzal90 hat folgendes geschrieben Zum zitierten Posting springen:
Ja schon klar, wenn man das so ganz eng sieht und die Fenster unbedingt direkt über das Handle identifizeren möchte..
Woher weiß ExtTextOut denn an welche stelle auf dem gesamten Bildschirm es schreiben muss, wenn es nur die Koordinaten relativ zur ecke des Fensters hat? gibts informationen über ein DC wo es sich befindet oder sowas?

Ja, der Viewport befindet sich im DC-Objekt. Steht doch alles bei MSDN :nixweiss:.
msdn.microsoft.com/e...ibrary/aa932374.aspx

Hier eine Liste aller GDI Funktionen:
msdn.microsoft.com/e...ibrary/aa923590.aspx

user profile iconQuetzal90 hat folgendes geschrieben Zum zitierten Posting springen:
Ansonsten unterscheiden sich die DCs die bei verschiedenen fenster gebraucht werden hab ich festgestellt, wenn ich jetzt erst eins öffne und zu einem bestimmten Text in meinem Hauptprogramm das/die DC speichere müsste ich alles mit DrawTextEx und ExtTextOut geschriebene doch eigentlich zuordnen können.. dann könnte man das nächste Fenster öffnen und wieder erst alle DCs speichern.. Nur so ne Idee, ich probiers mal ;)

schöne Grüße,
Quetzal

Du wolltest doch "Daten den jeweiligen Fenstern zuordnen"!?. Woher weisst du jetzt, welches Fenster zu welchem DC gehört?

_________________
Debuggers don't remove bugs, they only show them in slow-motion.
Quetzal90 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 02.07.10 17:39 
Hi

Hmm da les ich ja schon die ganze zeit, aber bei GetViewportExtEx steht ja nur es gibt die breite und länge des DCs aus so wie ich das verstanden hab.. auch wenn es mir nur 1 und 1 ausgibt, was mich auch noch nicht weiterbringt.. clientToScreen hab ich auch schon probiert aber dazu braucht man ja das Handle und dich das DC..
Und von den ganzen anderen GDI Funktionen scheint keine Die Koordinaten des DCs zum gesamten Screen rauszurücken? hmm


Und zu der anderen Idee: Wenn ich z.b. eine bestimmte Ausgabe kenne, angenommen da steht "Anzahl=" irgendwo geschrieben, dann kann ich doch an die Hauptanwendung das DC schicken und das "Anzahl=" geschrieben wurde. dann öffne ich ein anderes Fenster und sende wieder das DC und "Anzahl=" und da jetzt das DC wohl ein anderes ist, weiß ich dass es vom zweiten fenster kommen muss.. war das etwas verständlicher?
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Sa 03.07.10 11:40 
Wenn dir das elegant genug ist... könnte klappen. Was hast du genau vor? Willst du auf Spiele Ausgaben reagieren?

_________________
Debuggers don't remove bugs, they only show them in slow-motion.
Quetzal90 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 03.07.10 12:00 
Es ist mir nicht wirklich elegant genug. Eigentlich find ichs blöd. Lieber wär mir eben direkt vom DC aus auf das Fenster schließen zu können. Aber ich komm irgendwie weder an das Handle noch an die Koordinaten..

Und zu dem was ich machen will:
Es gibt ja so Programme die beim Pokern helfen und übrigens legal sind. Die Statistik führen über mein Spiel und das der Gegner. Ich hab mich mal gefragt wie die an die Infos kommen und bastel gerade spaßeshalber sowas nach.

Danke für deine Hilfe,
Quetzal
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: So 04.07.10 12:59 
Vielleicht hast du ja Glück und die DC's werden direkt nach jedem Window geholt! Dh:

-CreateWindowEx hooken, Fensterhandle speichern
-GetDC hooken, hdc speichern

Wenn du dann folgendes Ergebnis bekommst,

Window 1
DC 1

Window 2
DC 2

dann kannst du möglicherweise damit arbeiten. Ansonsten fällt mir nur noch ein Debugger ein, der die GetDC Aufrufe auf die dazugehörige WndProc traced (Den Aufwand wäre es mir aber nicht wert :o).

_________________
Debuggers don't remove bugs, they only show them in slow-motion.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: So 04.07.10 16:34 
user profile iconQuetzal90 hat folgendes geschrieben Zum zitierten Posting springen:
Ich hab mich mal gefragt wie die an die Infos kommen und bastel gerade spaßeshalber sowas nach.

Danke für deine Hilfe,
Quetzal


aus dem speicher lesen war dir wohl zu umständlich?

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: So 04.07.10 22:06 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
aus dem speicher lesen war dir wohl zu umständlich

Wie machst du sowas, ohne die zB. Pokersoftware zu reversen?

_________________
Debuggers don't remove bugs, they only show them in slow-motion.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 05.07.10 00:33 
So wie hier würde ich das zum beispiel angehen.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.