mouse_event 函数实现鼠标自动点击, 但为什么不成功??(50分)

  • 主题发起人 icysword
  • 开始时间
I

icysword

Unregistered / Unconfirmed
GUEST, unregistred user!
用一个TTimer控件, 代码如下:
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
begin
while i<>0 do
begin
i:=1;
application.ProcessMessages;
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
end;
无限循环. 然后用热键F5控制TTimer.Enable:=true; F6控制TTimer.Enable:=false;
以上操作都能成功, 但是会造成系统崩溃, 死机, :( 请问为什么?? 有什么解决的办法吗?
 
我想要控制鼠标点击的次数,对吗?
 
不是次数啊, 是一个无限循环, 但可以用热键来控制开始和停止的操作, F5控制TTimer.Enable:=true
进入循环, 想停止的时候可以用F6使TTimer.Enable:=false就可以了.
不过上面的代码会让系统死机, 不知道什么原因.
高手请指点.... 谢谢.
 
需要在循环里判断一下 Timer.Enabled,如果为 False 则退出:)
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;
改成这样就行了,因为timer本身就是定时触发的呀,当tiemr为true时,就可以循环
触发了呀,定时器的长度决定了你点击的频率,如设定50ms,则每秒产生自动点击的
动作20下。明白了吗?原来的代码错就错在while上。
 
倒~ 我可真笨哪, :) 谢谢truecat大客指点,
 
顶部