Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IsWhite, Red, Black, Green....? (https://www.delphipraxis.net/100291-iswhite-red-black-green.html)

k4ni 25. Sep 2007 21:20


IsWhite, Red, Black, Green....?
 
Hey pr0's.

Bin zurzeit dabei eine art bot zu machen, doch ich hab ein problem und komm nicht weiter.

Manche von euch kennen doch bestimmt das ACTool indem man seine eigenen makros schreiben kann. Dort gibt es einen befehlt der heist
Delphi-Quellcode:
IsWhite 309, 299
Also wenn auf der Mouse Position von 309/299 die farbe WEISS erkannt wird macht er das was danach folgt also z.b.
Delphi-Quellcode:
IsWhite 309, 299
RightClick
Also macht es dann einen rechtsklick, ganz einfach mit diesem tool. Doch gibt es solche funktionen auch bei delphi ?

mkinzler 25. Sep 2007 21:24

Re: IsWhite, Red, Black, Green....?
 
Natürlich kann man so etwas auch mit Delphi machen.

k4ni 25. Sep 2007 21:28

Re: IsWhite, Red, Black, Green....?
 
Zitat:

Zitat von mkinzler
Natürlich kann man so etwas auch mit Delphi machen.

Das is schonnma ne gute nachricht :-D .
Doch wie heist diese funktion, hab in der sufu/google nichts gefunden bzw. wusste ich granicht wirklich nach was ich suchen soll.

mkinzler 25. Sep 2007 21:30

Re: IsWhite, Red, Black, Green....?
 
Schau dir mal
Delphi-Quellcode:
Form.Canvas.Pixels[]
an.

inherited 25. Sep 2007 21:31

Re: IsWhite, Red, Black, Green....?
 
Erstmal musst du an die Bildinformationen kommen. benutz mal die Forensuche!
mkinzler: Ich glaube es geht um globale Pixel

k4ni 25. Sep 2007 21:39

Re: IsWhite, Red, Black, Green....?
 
Also.
Ich hab es mal so versucht:
Delphi-Quellcode:
Canvas.Pixels[5,5] := 'white'
oder mir #FFFFFF oder so zeugs bekomm aber
Delphi-Quellcode:
[Error] Unit1.pas(29): Incompatible types: 'TColor' and 'String'
lösung?

und eh was sind globale pixel ?
und ich weis nicht nach was ich genau suchen muss. sorry

edit: ok clWhite geht, bin mal probieren :)

edit2:
also ich hab jetzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Canvas.Pixels[5,5] = clWhite then
ShowMessage ('xD');
end;
Also sollte es auf Cordinaten 5,5 weiss sein sollte doch msg kommen, oder nich? geht aber irgendwie nicht. :(

mkinzler 25. Sep 2007 21:44

Re: IsWhite, Red, Black, Green....?
 
Meine Lösung betrachtet nur den Canvas einer Form.
Wie die Fehlermeldung schon aussagt kannst du Pixel nicht mit einem String vergleichen, da sie vom Typ TColor sind:

Delphi-Quellcode:
if Canvas.Pixels[5,5] = clWhite then ...

k4ni 25. Sep 2007 21:46

Re: IsWhite, Red, Black, Green....?
 
Ahja, dann sind also globale pixel auch die pixel aushalb der form.
Innerhlab geht es mit damit.
Doch wie würde das aushalb gehen, oder wie ist da begriff für so etwas damit ich suchen kann ? :-D

mkinzler 25. Sep 2007 21:49

Re: IsWhite, Red, Black, Green....?
 
Hier
http://www.dsdt.info/tipps/?id=321
findest du Code um an den Canvas des Desktops heranzukommen.

k4ni 25. Sep 2007 22:01

Re: IsWhite, Red, Black, Green....?
 
dankeee :)
Nur dann sollte das so eigenglich klappen oder?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 DCanvas: TCanvas;
 DHandle: HWND;
begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
     if DCanvas.Pixels[5, 5] = clWhite
       then ShowMessage ('x');
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
        RaiseLastOSError;
    end;
 end
 else
   RaiseLastOSError;
end;

blackdrake 25. Sep 2007 22:06

Re: IsWhite, Red, Black, Green....?
 
Hallo k4ni.

Kann den Code gerade nicht testen. Funktioniert er denn? Erstelle einfach ein zweites Form mit Hintergrundfarbe clWhite und schiebe es so, dass bei Koordinate 5|5 der Bildpunkt weiß ist.

Wenn es funktioniert, solltest du dir aber noch Gedanken darüber machen, ob du wirklich 100% Weiß (256 Rot, 256 Grün, 256 Blau) oder alle Weißtöne erkennen willst. Im zweiteren Fall (was bei Head-Shot-Bots o.ä. sinnvoll wäre) musst du deine TColor der Bildkoordinate in die Bestandteile R, G und B aufteilen und dann analysieren, welche Spektralfarbe sich ergibt. Wenn du diesbezüglich Hilfe brauchst, kannst du natürlich fragen.

Gruß
blackdrake

inherited 25. Sep 2007 22:10

Re: IsWhite, Red, Black, Green....?
 
Nein, das geht so nicht, weil du zwar nett das Handle bekommst aber dann unabhängig davon einfach ein TCanvas Createst und damit rumspielst.

mkinzler 25. Sep 2007 22:14

Re: IsWhite, Red, Black, Green....?
 
Du hast vergessen den neu erzeugten Canvas zu verbinden:
Delphi-Quellcode:
DCanvas.Handle:=DHandle;

k4ni 25. Sep 2007 22:16

Re: IsWhite, Red, Black, Green....?
 
Also ne der code geht nicht wie eben von inherited gesagt. Werd gleich nochma reinschauen.

Zu den farben:
Es handelt sich um eine 2D anwendung.
Farbcode: #EFEFEF
R: 239
G: 239
B: 239

Wie kann ich das dann benützen ?

edit:
Vielen dank mkinzler daran lags, jetzt geht das perfekt! :) Jetzt muss ich nur noch testen ob EFEFEF auch als clWhite angesehen wird.

mkinzler 25. Sep 2007 22:19

Re: IsWhite, Red, Black, Green....?
 
Nein EFEFEF ist nicht weiß (FFFFFF)
Delphi-Quellcode:
if DCanvas.Pixels[5, 5] = RGB(239 239, 239 ) then ...

k4ni 25. Sep 2007 22:35

Re: IsWhite, Red, Black, Green....?
 
THX AN ALLE!
Danke an alle die mir eben geholfen haben!
Danke fuer schnellen und hilfreichen support. Klappt super. THANX

inherited 26. Sep 2007 17:07

Re: IsWhite, Red, Black, Green....?
 
Statt RGB(XX,XX,XX) zu nehmen kannst du auch direkt auf #EFEFEF prüfen, allerdings dabei beachten dass die Angabe als Big Endian erfolgt, also du nicht RGB, sondern BGR-Reihenfolge hast


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz