怎么控制鼠标?(300分)

  • 主题发起人 主题发起人 aton2000
  • 开始时间 开始时间
A

aton2000

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么控制鼠标?
例如在程序中单击一个button,鼠标将自己(非人为控制)移动到另一个button处,并点击。有无办法实现?
 
就是在屏幕上移动鼠标吧???

如果是的话,“问题检索”一下,很多这方面的问题。
 
是否这样?
procedure TForm1.Button2Click(Sender: TObject);
begin
SetCursorPos(Left + Button1.Left + Button1.Width div 2,
Top + 20 + Button1.Top + Button1.Height div 2);
Button1.Click;
end;
这是一下子出现在另一个地方,你是要这样还是慢慢移过去?
 
请看以下方法:
procedure MoveMouseIntoControl(AWinControl: TWincontrol);
var
rtControl: TRect;
begin
rtControl := AWinControl.BoundsRect;
MapWindowPoints(AWinControl.Parent.Handle, 0, rtControl, 2);
SetCursorPos(rtControl.Left + (rtControl.Right - rtControl.Left) div 2,
rtControl.Top + (rtControl.Bottom - rtControl.Top) div 2);
PostMessage(AWinControl.Handle, WM_LBUTTONDOWN, 0, 0);
PostMessage(AWinControl.Handle, WM_LBUTTONUP, 0, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j:Integer;
begin
MoveMouseIntoControl(Button2);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage('OK');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
tt:TPoint;
begin
tt.x :=0;tt.y:=0;
tt :=Button2.ClientToScreen (tt);
SetCursorPos(tt.x,tt.y);
Button2.Perform (BM_CLICK,0,0);
end;
 
来者皆有分得,大家再继续。

我想鼠标有一个移动的过程,移动的过程中最好是不受人的控制。
如果有人在移动鼠标,鼠标最后还是停留在button2上并点击。
 
可不可以sleep一下
procedure MoveMouseIntoControl(AWinControl: TWincontrol);
var
rtControl: TRect;
oldP,newP:TPoint;
i,j :integer;
begin
rtControl := AWinControl.BoundsRect;
MapWindowPoints(AWinControl.Parent.Handle, 0, rtControl, 2);
GetCursorPos (oldP);
newP.x :=rtControl.Left + (rtControl.Right - rtControl.Left) div 2;
newP.y :=rtControl.Top + (rtControl.Bottom - rtControl.Top) div 2;
i :=oldP.x; j:=oldP.y;
while (i<>newP.x) or (j<>newP.y) do
begin
if i>newP.x then dec(i); if i<newP.x then inc(i);
if j>newP.y then dec(j); if j<newP.y then inc(j);
SetCursorPos (i,j);
Sleep(1);
end;
PostMessage(AWinControl.Handle, WM_LBUTTONDOWN, 0, 0);
PostMessage(AWinControl.Handle, WM_LBUTTONUP, 0, 0);
end;
 
>>我想鼠标有一个移动的过程,移动的过程中最好是不受人的控制。
>>如果有人在移动鼠标,鼠标最后还是停留在button2上并点击。
在button2以外控件的的OnMouseMove事件中写代码,把鼠标位置移回button2上
 
多人接受答案了。
 

Similar threads

回复
0
查看
848
不得闲
D
回复
0
查看
909
DelphiTeacher的专栏
D
D
回复
0
查看
704
DelphiTeacher的专栏
D
后退
顶部