Entwickler-Ecke

Windows API - Handles in fremdem Programm finden ohne enumChildWindows?


Quetzal90 - Mi 18.11.09 21:38
Titel: Handles in fremdem Programm finden ohne enumChildWindows?
Hi

Also ich hatte gerade mal ein Programm geschrieben dass beim Pokern helfen sollte.
Und zwar funktionierte das erstmal sehr bescheiden indem es einfach nen Screenshot vom Pokerraum macht,
in meinem Fall von FullTilt, und dann an der entsprechenden Stelle nach Karten sucht und diese anhand von
Bildern identifizert. Also Screenshot machen, Karten vom Board ausschneiden und mit Vergleichskarten abgleichen.
Und dann halt Gewinnmöglichkeiten errechnen usw.. klappte an sich ja auch ganz gut.. nur kostet das Bilder abgleichen
ja dann doch recht viel Zeit, und abgesehen davon muss die Auflösung gleichbleiben udn es ist nicht sonderlich elegant.
dann hab ich mir überlegt nach Handles zu suchen von den Buttons und allem was da so rumschwirrt um so vielleicht die
nötigen Informationen schneller zu erhalten. Allerdings klappte das über EnumWindows und EnumChildWindows und diese
Sachen nicht, da keine Handles gefunden werden außer denen vom Fenster. Wird wohl bedeuten dass es keine üblichen Windows-
Komponenten sind?

Beim Suchen ist mir dann ein Programm aufgefallen was genau die Sachen macht die ich will: http://www.holdemindicator.com/

So viel Text für wenig Frage: ;)
Hat vielleicht ne idee wie die das machen? oder allgemein wie man das hinkriegen könnte? Ansätze?

Danke fürs Lesen :)
Wer was weiß bitte melden :)


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mo 23.11.2009 um 11:05


SAiBOT - Mo 23.11.09 14:33

Wenn du keine handles kriegst kannst du es noch über Textout-hooks probieren.
Ich weiß nicht wie es bei Fulltilt ist, aber bei Partypoker funktioniert es.
Andere Möglichkeiten als eine visuelle Auswertung wirst du wohl sonst nicht haben befürchte ich :nixweiss:

Allerdings dauert es nur wenige ms., wenn man nur einzelne Pixel scannt, anstatt wie du Bilderteile. Da spreche ich aus Erfahrung 8):
http://evilsoft.de/partypokeroddscalc/

Ansonsten mal googeln da gibt es irre viel Zeug wie z.B. das:
http://www.codingthewheel.com/archives/how-i-built-a-working-poker-bot


uall@ogc - Di 24.11.09 20:16

Mit hooksist das alles relativ einfach (Sofern man damit umgehene kann). Ein Hook auf TextOut z.b. funktioniert ganz gut, besser ist es natürlich wenn man direkt auf die einzelnen Records im Speicher zugreift. Dann läuft das auch alles im Hintergrund und mit mehreren Tables.

Etwas was nie fertig geworden ist:
http://uall.cheat-project.com/ppbot/pic.jpg


Flamefire - Sa 28.11.09 11:26

ich würde dir 2 dinge empfehlen
1) suche nach autoit. da hast du nen window info tool, dass dir auch subfenster (die meisten) anzeigt. damit kannste gucken, ob da überhaupt ein button o.ä. ist und wie/ob du den identifizieren kannst
2) ne dll schreiben, injecten und dann auf die dll zugreifen. mit der dll kannste dann entweder über hooks oder reversing an die strukturen kommen


SAiBOT - Sa 28.11.09 12:06

Wenn es mit EnumChildWindows nicht klappt wird es mit deinem Autoit tool auch nicht klappen.


Boldar - Sa 28.11.09 22:04

hä? AutoIt ist doch eine Scriptsprache.
Meinst du Winspy?
Aber ich dachte, in kostenpflichtigen Pokerprogrammen, wo um Geld gespielt wird, ist sowas verboten?
edit: Ist laut AGB dort wohl erlaubt.


SAiBOT - So 29.11.09 17:33

Solange das Ganze, wie oben erwähnt nicht reversed wird, befindet sich sowas wohl in einer gesetzlichen Grauzone.