Einzelnen Beitrag anzeigen

Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

Kleine Bitmap in einer größeren Bitmap finden

  Alt 16. Jul 2014, 03:03
hi!

Ich möchte ein Poker-Tool schreiben wie den "Holdem Indicator", bedeutet ein tool das mir beim pokerspielen anzeigt wieviel gewinnchance meine aktuelle hand hat, vielleicht verglichen mit den noch im spiel befindlichen karten etc. Also quasi die Anzeige die auch beim DSF Poker immer angezeigt wird und mir eine übersicht gibt wie gut meine chancen stehen.

für mich stellt sich jetzt die frage wie ich das programm mein eigenes Blatt auslesen lasse.
Ich weiß wie ich einen screenshot von meinem bildschirm mache und bestimmte pixel nach farben absuche und so mein eigenes blatt identifiziere...allerdings finde ich das recht aufwendig, fehlerlastig, vor allem wenn auch noch der flop, turn, river etc ausgelesen werden sollen...ein riesen haufen koordinaten.

einfache variante wäre wenn ich ein screenshot von jeder karte schon im programm hätte und dieses mit dem screenshot meines bildschirms verglichen werden würde..ich finde nur zu dem thema nichts..ich habe den sourcecode in c++ gefunden was ich leider nicht beherrsche. ;D

Code:
procedure TForm1.Button2Click(Sender: TObject);
var
game_hwnd : hwnd;
prect:Trect;
posx,posy:integer;
dc:hdc;
AColor : Array[1..4] of Byte;

begin

game_hwnd := findwindow(nil,'POKER - mozilla firefox');
setforegroundwindow(game_hwnd);
setfocus;
postmessage(game_hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0);
GetWindowRect(game_hwnd, prect);
prect.Top := prect.Top + GetSystemMetrics(SM_CYCAPTION);
width:=prect.Right - prect.left;
height:=prect.Bottom - prect.Top;
posx:=prect.left;
posy:=prect.top;

   DC := GetDC(game_hwnd);

 
  DWord(AColor) := GetPixel(dc,406,409);
 //HERZ KÖNIG
  if (AColor[1] > 220) and (AColor[2] > 95) and (AColor[3] > 190) then
    ....
das ist jetzt nur ein beispiel wie ich die farben auf dem screenshot auslesen würde..hat jemand nen tip wie ich einfach ein bild aus meinem timage einlesen kann?

danke
  Mit Zitat antworten Zitat