Einzelnen Beitrag anzeigen

Benutzerbild von HannosG
HannosG

Registriert seit: 2. Jul 2006
42 Beiträge
 
Delphi 2010 Professional
 
#26

Re: Maus auf ein Ereignis reagieren lassen

  Alt 15. Apr 2007, 18:58
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)
Hanno Günther
  Mit Zitat antworten Zitat