Vielleicht so:
Delphi-Quellcode:
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
DesktopDC: hDC;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DesktopDC := GetDC(0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
If DesktopDC > 0 then
ReleaseDC(0, DesktopDC);
end;
function GetPixelAbweichung(Farbe: TColor): Integer;
var DCFarbe: TColor;
begin
DCFarbe:=GetPixel(DesktopDC, Mouse.CursorPos.X, Mouse.CursorPos.Y);
Result:=Abs(GetRValue(Farbe)-GetRValue(DCFarbe)) +
Abs(GetGValue(Farbe)-GetGValue(DCFarbe)) +
Abs(GetBValue(Farbe)-GetBValue(DCFarbe));
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If GetPixelAbweichung(clGreen)<100 // die Abweichung von der Farbe, z.B. 100. maximale Abweichung wäre 3*255
then begin
mouse_event(MOUSEEVENTF_RIGHTDOWN, Mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP, Mouse.CursorPos.X, Mouse.CursorPos.Y, 0, 0);
end;
end;
"Abs" gibt den Betrag bzw. den Absolut-Wert zurück. Bsp.: Abs(2-7)=5
EDIT: Achja, DesktopDC am Ende noch freigeben. (s. bittsetter)