| Autor |
Beitrag |
Quetzal90
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: 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 
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: 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 
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Fr 02.07.10 16:15
Quetzal90 hat folgendes geschrieben : | 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  .
msdn.microsoft.com/e...ibrary/aa932374.aspx
Hier eine Liste aller GDI Funktionen:
msdn.microsoft.com/e...ibrary/aa923590.aspx
Quetzal90 hat folgendes geschrieben : | 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 
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: 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 
Hält's aus hier
Beiträge: 11
|
Verfasst: 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
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: 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  ).
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: So 04.07.10 16:34
Quetzal90 hat folgendes geschrieben : | 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
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: So 04.07.10 22:06
elundril hat folgendes geschrieben : | | 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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.
|
|