Das Problem ist, dass die Funktion keine normalen Bildschirmkoordinaten erwartet, sondern den Bildschirm in x- und y-Richtung in 65535 Einheiten unterteilt:
Zitat von
MSDN:
If MOUSEEVENTF_ABSOLUTE value is specified, dx and dy contain normalized absolute coordinates between 0 and 65,535. The event procedure maps these coordinates onto the display surface. Coordinate (0,0) maps onto the upper-left corner of the display surface, (65535,65535) maps onto the lower-right corner.
Folgendes funktioniert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
Var x, y: Integer;
begin
Timer1.Enabled := False;
// gewünschte Position in Bildschirmkoordinaten
x := 50;
y := 760;
// noch umrechnen
x := 65535 Div Screen.Width*x;
y := 65535 Div Screen.Height*y;
// Maus bewegen und klicken, nur klicken geht nicht...
mouse_event(MOUSEEVENTF_MOVE Or MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_ABSOLUTE,x,y,0,0);
mouse_event(MOUSEEVENTF_MOVE Or MOUSEEVENTF_LEFTUP Or MOUSEEVENTF_ABSOLUTE,x,y,0,0);
end;
Gruß, teebee