关于鼠标自动移动得问题,急(100分)

  • 主题发起人 主题发起人 lm_sql2000
  • 开始时间 开始时间
L

lm_sql2000

Unregistered / Unconfirmed
GUEST, unregistred user!
各位前辈,小弟初学,有一个问题急求解
我想作一个程序,给定路径,鼠标能根据路径自动移动,并可以在过程中模拟鼠标左键
点击其他程序中的一个click。[:(]
请问如何解,希望给源码!!!!
 
留个email,我把以前做的游戏外挂的源程序发给你,不过要等到晚上,
程序在家里:)
 
To: Bxch_1000 好好,谢谢了 [:D],
lm_sql2000@sohu.com
lm_sql2000@163.com
谢谢!!!
 
邮件已发,请查收
 
來晚了,bxch_100000:
我也要,千恩萬謝,
chinakama@hotmail.com
 
lm_sql2000:
我也急用,收到轉給我一份,謝謝
 
我已經收到,哪個dll不知用哪個版本編譯的,
我用delphi5老是出錯,說什么強奸了keyhook.dll
哪位有keyhook.dll的原碼?或是解決辦法,謝了!

 
参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=1395801
以下是我的答案:


这一问题在 win98 下已圆满解决!!!


procedure MoveToTarget(pTarget:TPoint);
var
p:TPoint;
i,n,dx,dy,mx,my,sx,sy:integer;
begin
n:=20;
windows.getcursorpos(p);
dx:=(pTarget.x-p.x) div 2;
dy:=(pTarget.y-p.y) div 2;
if dx>0 then sx:=1 else sx:=-1;
if dy>0 then sy:=1 else sy:=-1;

dx:=abs(dx);
dy:=abs(dy);

mx:=dx mod n;
dx:=dx div n;
my:=dy mod n;
dy:=dy div n;

mx:=mx*sx;
dx:=dx*sx;
my:=my*sy;
dy:=dy*sy;

mouse_event(MOUSEEVENTF_MOVE,mx,my,0,0);
for i:=1 to n do
begin
sleep(100);
mouse_event(MOUSEEVENTF_MOVE,dx,dy,0,0);
end;
end;

//以下程序在 win98 下测试成功,分辨率为 800X600
//假设“开始”菜单的中心位置屏幕坐标为 (25,586)
//假设“我的电脑”图标的中心位置屏幕坐标为 (35,25)

// 移向开始菜单,并将它点开
procedure TForm1.Button1Click(Sender: TObject);
begin
MoveToTarget(point(25,586)); //移向开始菜单
sleep(500);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //点击
mouse_event(MOUSEEVENTF_LEFTUP ,0,0,0,0);
end;

// 移向我的电脑,并将它打开
procedure TForm1.Button2Click(Sender: TObject);
begin
keybd_event(vk_lwin,0,0,0);
keybd_event(68,0,0,0);
keybd_event(68,0,KEYEVENTF_KEYUP,0);
keybd_event(vk_lwin,0,KEYEVENTF_KEYUP,0);

MoveToTarget(point(35,25)); //移向“我的电脑”
sleep(500);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //点击
mouse_event(MOUSEEVENTF_LEFTUP ,0,0,0,0);
sleep(10);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //形成双击
mouse_event(MOUSEEVENTF_LEFTUP ,0,0,0,0);
end;
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部