-
五月 13
本站有个鼠标自动点击器,这玩意说实话某种意义上就是外挂程序,不过我们今天不说外挂的危害,说说怎么来做这样一个鼠标自动点击器。
我们知道,Windows里面都是靠消息驱动的,当我们按下鼠标的时候,会发出一个鼠标消息,当系统捕获到这个鼠标消息的时候,再根据消息类型去执行不同的动作,比如单击,双击,滚动等等,所以,我们只要模拟出这个消息就可以骗取系统认为我们已经按下了鼠标。
Delphi里面有个函数叫Mouse_Event,它可以模拟出我们想要的鼠标消息,这个函数引用自User32.dll,原型是
procedure mouse_event; external user32 name 'mouse_event';
这个函数有5个参数,MSDN中说明如下
VOID mouse_event( DWORD dwFlags, // motion and click options DWORD dx, // horizontal position or change DWORD dy, // vertical position or change DWORD dwData, // wheel movement ULONG_PTR dwExtraInfo // application-defined information );
第一个参数表示按键类型,常见的如下:
MOUSEEVENTF_LEFTDOWN:鼠标左键按下
MOUSEEVENTF_LEFTUP:鼠标左键弹起
MOUSEEVENTF_RIGHTDOWN:鼠标右键按下
MOUSEEVENTF_RIGHTUP:鼠标右键弹起
当然还有其他的几个,这里暂时用不到,比如MOUSEEVENTF_WHEEL表示鼠标滚轮滚动消息,MOUSEEVENTF_MOVE表示鼠标移动消息等等。
第二个和第三个参数表示鼠标点击的坐标X,Y,这个是比较重要的,我们需要根据坐标来定位。第四个参数表示鼠标滚轮的滚动偏移量,只有当第一个参数是MOUSEEVENTF_WHEEL才有效,其他情况用0代替即可。第五个参数默认0代替,一般只有用到额外的鼠标关联事件才会用到。
好了,分析好以上函数,我们就可以开工了。
使用以下代码,我们就完成了一次针对0,0点的鼠标左键单击:
var x,y:integer; begin x:=0;y:=0; Mouse_Event(MOUSEEVENTF_LEFTDOWN,x,y,0,0); Mouse_Event(MOUSEEVENTF_LEFTUP,x,y,0,0); end;
如果要双击怎么办呢?很简单,重复再写一次就可以了:
var x,y:integer; begin x:=0;y:=0; Mouse_Event(MOUSEEVENTF_LEFTDOWN,x,y,0,0); Mouse_Event(MOUSEEVENTF_LEFTUP,x,y,0,0); Mouse_Event(MOUSEEVENTF_LEFTDOWN,x,y,0,0); Mouse_Event(MOUSEEVENTF_LEFTUP,x,y,0,0); end;
这样,我们就可以做一个简单的鼠标自动点击器来解放你的双手啦。
- 评论(0)
发表评论 TrackBack
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。