Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pixelkoordinaten werden im falschen handel gesucht? (https://www.delphipraxis.net/158061-pixelkoordinaten-werden-im-falschen-handel-gesucht.html)

rhodan 3. Feb 2011 22:42

Pixelkoordinaten werden im falschen handel gesucht?
 
hi..

hab ein problem bei dem ich nicht dahinterkomme...
mein tool schaut ob eine geöffnete google seite in firefox da ist, und wenn ja, schaut auf den beiden koordinaten des grünen "zurückpfeils" sowie des blauen "refresh" pfeils in firefox nach jeweils der farbe der pixels... zumindest SOLL es das :D wenn diese in der RGB range die ich angegeben habe im bereich grün bzw blau liegen wird, werden die zwei panels im programmfenster grün bzw das andere dann blau gefärbt.
ich möchte mit diesem tool also eigentlich nur kontrollieren ob:

1. in FIREFOX die pixelkoordinaten abgesucht werden (könnte auch ein anderes fenster sein nur firefox hat zu beispielzwecken denke ich fast jeder.). frage ist also ob im richtigen fenster gesucht wird

2. ob die farbe der koordinaten IN firefox richtig erkannt wird, wenn das der fall ist ändert sich die farbe der panels im programm.

leider klappt das nicht...


hier mal der komplette code...zum testen braucht man nur 2 panels, 2 labels und nen timer in die form legen, der einzigste code ist im timer. hab keine ahnung wo der fehler sein könnte, ich denke ich deklariere firefox schon richtig als handle?!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
mozilla_hwnd : hwnd;
AColor : Array[1..4] of Byte;
begin
mozilla_hwnd := findwindow(nil,'google - mozilla firefox');
setfocus;
panel1.color:=clBtnFace;
panel2.color:=clBtnFace;

 DWord(AColor) := GetPixel(mozilla_hwnd,29,66); // Die Koordinaten des grünen ZURÜCK pfeils in mozilla
 if (AColor[1] > 70) and (AColor[1] < 76) and (AColor[2] > 161) and (AColor[2] < 168)and (AColor[3] > 72) and (AColor[3] < 78)then
 panel2.color :=clgreen;

 DWord(AColor) := GetPixel(mozilla_hwnd,103,60); // die Koordinaten des blauen REFRESH pfeils in Mozilla
 if (AColor[1] > 19) and (AColor[1] < 25) and (AColor[2] > 94) and (AColor[2] < 100)and (AColor[3] > 230) and (AColor[3] < 238)then
 panel1.color :=clblue;

 Label1.Caption := 'R: ' + IntToStr(AColor[1]) + ';     ' +
                    'G: ' + IntToStr(AColor[2]) + ';     ' +
                    'B: ' + IntToStr(AColor[3]) + ';     ' +
                    'Hex: ' + IntToHex(DWord(AColor),6);

 label2.Caption := 'TColor: $'+IntToHex(DWord(AColor),8);


end;
end.
danke für die hilfe!
ps: damit der zurück button wenn google aufgerufen ist grün ist so das das tool den button auch als grünen erkennt muss man natürlich vorher auf ner anderen seite gewesen sein ;)

lg robin

Bummi 3. Feb 2011 23:02

AW: Pixelkoordinaten werden im falschen handel gesucht?
 
Ich weiß nicht ob Du so überhaupt zu Ziel kommen kannst, ob die Buttons oder deren Parents überhaupt im HDC des des Hauptfensters gemalt werden, aber wenn dann eh nur so:
Delphi-Quellcode:
DC:HDC;
begin
mozilla_hwnd := findwindow(nil,'google - mozilla firefox');
DC := GetDC(mozilla_hwnd);

...
 DWord(AColor) := GetPixel(DC,103,60);
...
 ReleaseDC(mozilla_hwnd,DC)

rhodan 3. Feb 2011 23:24

AW: Pixelkoordinaten werden im falschen handel gesucht?
 
hmm, danke für den tip mit dem DC. ich habs jetzt mal mit nem foto getested, angezeigt in der windows bild- und faxanzeige, aber auch hier klappt die erkennung nicht :S

Bummi 3. Feb 2011 23:47

AW: Pixelkoordinaten werden im falschen handel gesucht?
 
Wenn Du mit einem Delphiform testest, Dir über sein Handle das DC geben lässt und ein paar verschiedenfarbige Panels drauflegst sieht Du wo gegf. das Problem liegt.
Über GetDC(Panelx.Handle) kommst Du dahin wo Du willst, aber über das Formhandle nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.

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