![]() |
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:
danke für die hilfe!
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. 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 |
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) |
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
|
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 10:40 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 by Thomas Breitkreuz