kleines Beispiel programm
Delphi-Quellcode:
var
Form1: TForm1;
FHdc:HDC;
implementation
{$R *.DFM}
(*
//funktion zum prüfen, ob fenster sichtbar
function WindowVisible(Caption:string):boolean;
var r:TRect;
hwnd:THandle;
begin
result:=false;
if (Caption<>'') then
begin
hWnd:=FindWindow(nil,PCHAR(Caption)); //handle des fensters, 0=nicht gefunden
if hWnd<>0 then
if isWindowVisible(hWnd) then //winapi zum prüfen, ob sichtbar
if GetWindowRect(hWnd,r) then //fensterposition holen
//prüfen ob sichtbar (u.a. position in sichtbereich, muss ggf. angepasst werden)
if (r.top>-50) and (r.Left>-50) and (r.Left<>r.Right) then result:=true;
end;
end;
//bei relativen (fensterabhängigen) positionen, das fenster-Rechteck holen,
//und die relativen werte in Absolute umrechnen
//FRelativePosition = relativ zu einem fenster ja/nein
//FWindowTitle = Fenstertitel
//srcRect = definiertes rechteck (relative position)
function GetScreenRect(FRelativePosition:boolean;FWindowTitle:string;srcRect:TRect):TRect;
var r:TRect;
begin
r:=srcRect; //r initialisieren
//wenn koordinaten relativ sein sollen (funktionsparameter) und das durch FWindowTitle
if (FRelativePosition) and (WindowVisible(FWindowTitle)) then
begin
//fensterposition/größe holen
GetWindowRect(Findwindow(nil,PCHAR(FWindowTitle)),r);
//absolute position berechnen
r.Left:=FselRect.Left+r.left;
r.Top:=FselRect.Top+r.Top;
r.right:=r.left+(FSelRect.right-FSelRect.Left);
r.bottom:=r.top+(FSelRect.Bottom-FSelRect.Top);
end;
result:=r;
end;
*)
function GetScreenPixel(x,y:integer):TColor;
begin
//den farbwert der angegebenen position auf dem bildschirm ermitteln
result:=GetPixel(FHdc,x,y);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Handle des Bildschirmcanvas holen
FHdc:=GetDC(0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var p:TPoint;
begin
//aktuelle Cursorposition holen und in p speichern
GetCursorPos(p);
//meine funktion aufrufen, die cursorposition mitgeben und den
//Rückgabewert der color-eigenschaft des forms zuweisen
color:=GetScreenPixel(p.x,p.y);
end;
statt der cursorposition kannst du natürlich auch andere Koordinaten nehmen. (siehe auch die auskommentierte funktion zur Bestimmung der Fensterposition/Größe).
//kommentare hinzugefügt und getScreenRect etwas verändert, sowie fehlende Funktion zu Prüfen der Sichtbarkeit hinzugefügt
//ich hoffe, die kommentare helfen weiter
HTH Frank