![]() |
Pixelfarbe abfragen mit Delphi
Hallo,
wie kann ich die Farbe eines auf dem Bildschirm sichtbaren Pixels, von dem ich die Koordinaten weiss, abfragen? Ich will einen bestimmten Bildschirmbereich auf Farbänderungen überwachen, das Delphi Programm soll dabei im Hintergrund laufen. Habt ihr ne Idee? Danke für eure Hilfe :coder: Gruß, Corny |
Re: Pixelfarbe abfragen mit Delphi
Vielleicht so:
Delphi-Quellcode:
Hab's aber nicht gestestet!
function GetPixel(Pos: TPoint): TColor;
var DC: HDC; Handle: HWND; begin Handle:=WindowFromPoint(Pos); DC:=GetDC(Handle); result:=Windows.GetPixel(DC, Pos.X, Pos.Y); ReleaseDC(Handle, DC); end; |
Re: Pixelfarbe abfragen mit Delphi
danke für deine antwort!
die funktion gibt mir nur die farbwerte von pixeln, die auf dem desktop liegen aus. :( wie kann ich auch pixel in aktiven programmfenstern analysieren ? gruß corny |
Re: Pixelfarbe abfragen mit Delphi
Vielleicht musst du es noch mit ChildWindowFromPoint kombinieren.
|
Re: Pixelfarbe abfragen mit Delphi
hast du ne idee, wie der quelltext dazu aussehen könnte?
aber danke schonmal :thuimb: |
Re: Pixelfarbe abfragen mit Delphi
ach, ne... ich glaube du musst die Position (Pos.X und Pos.Y) an das Fenster anpassen (also relative Koordinaten berechnen).
|
Re: Pixelfarbe abfragen mit Delphi
hmm da bin ich mir nicht sicher.
wenn ich nach dem quellcode vorgehe, den du als erstes gepostet hattest, zeigt das programm mir bei einem pixel in einem aktiven fenster den farbwert '-1'... -corny :coder: |
Re: Pixelfarbe abfragen mit Delphi
ich meine es ungefähr so (jetzt müsste es eigentlich funktionieren):
Delphi-Quellcode:
(edit: du könntest auch einfach einen Screenshot erstellen und dort dann die Pixel auslesen...)
function GetPixel(Pos: TPoint): TColor;
var DC: HDC; Handle: HWND; Rect: TRect; begin Handle:=WindowFromPoint(Pos); if GetWindowRect(Handle, Rect) then begin DC:=GetDC(Handle); Pos.X:=Pos.X-Rect.Left; Pos.Y:=Pos.Y-Rect.Top; result:=Windows.GetPixel(DC, Pos.X, Pos.Y); ReleaseDC(Handle, DC); end else begin result:=CLR_INVALID; end; if result=CLR_INVALID then raise Exception.Create('Fehler...'); end; |
Re: Pixelfarbe abfragen mit Delphi
kann das programm jetzt alle pixel, die ich als anwender sehe, abfragen, oder nur die des aktiven fensters?
edit: screenshot schwierig, ich muss ein laufendes programm überwachen... |
Re: Pixelfarbe abfragen mit Delphi
Alle, die der Anwender sieht. Probier's doch einafch aus...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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