特定の速度で移動するマウス ポインターをシミュレートする手順を Delphi で記述したいと考えていました (AutoIT の MouseMove 関数に似ています)。私のコードが間違っているか、何度も呼び出された後に SetCursorPos が誤動作します。ここに私が持っている機能があります:
procedure MoveMouse ( X, Y, Speed : Integer);
var
P : TPoint;
NewX : Integer;
NewY : Integer;
begin
if X < 0 then exit;
if Y < 0 then exit;
if X > Screen.Height then exit;
if Y > Screen.Width then Exit;
repeat
GetCursorPos(P);
NewX := P.X;
NewY := P.Y;
if P.X <> X then begin
if P.X > X then begin
NewX := P.X - 1;
end else begin
NewX := P.X + 1;
end;
end;
if P.Y <> Y then begin
if P.Y > Y then begin
NewY := P.Y - 1;
end else begin
NewY := P.Y + 1;
end;
end;
sleep (Speed);
SetCursorPos(NewX, NewY);
until (P.X = X) and (P.Y = Y);
end;
私はこのように使用します:
procedure TForm1.btn1Click(Sender: TObject);
var
X : Integer;
Y : Integer;
begin
for X := 0 to Screen.Width do begin
for Y := 0 to Screen.Height do begin
MouseClick (X, Y, 1);
end;
end;
end;
なんらかの理由で、マウスポインターが特定の X ポイントで動かなくなってから 0,0 に戻ってしまいますが、それはなぜですか?