当前位置:首页 > 软件开发 > dev
firefox

鼠标自动移动/点击

小辉程序在讲解过程中以c为基础,某些地方会兼顾讲解delphi的用法。但由于小辉用delphi和vb搞开发是在98年以前的事,现在一些技术细节也疏忘了许多,因此,朋友们若问我关于delphi/vb方面的技术问题,小辉可能无法给你满意的回答,建议你去相关的主页查询。对于涉及界面开发的一些简单问题,恕小辉不能一一回答

    鼠标的自动移动/点击功能的作弊软件重要的一个功能。有很多种方法能够实现鼠标的移动和点击。这里讲述两个api函数:

bool setcursorpos(
   int x, // horizontal position
   int y // vertical position
  );
  设置鼠标位置。鼠标指针在屏幕像素坐标系统中的x,y位置

  这个函数是用来设置mouse位置的。可以用这个函数来移动mouse在屏幕上的移动。

  另外一个函数功能比较强,即mouse_event()

void mouse_event(
   dword dwflags, 
   dword dx, 
   dword dy, 
   dword dwdata, 
   dword dwextrainfo
  );  

  设置mouse状态。参数说明如下:
  dwflags long,下述标志的一个组合 :
  mouseeventf_absolute dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 
  mouseeventf_move 移动鼠标 
  mouseeventf_leftdown 模拟鼠标左键按下 
  mouseeventf_leftup 模拟鼠标左键抬起 
  mouseeventf_rightdown 模拟鼠标右键按下 
  mouseeventf_rightup 模拟鼠标右键按下 
  mouseeventf_middledown 模拟鼠标中键按下 
  mouseeventf_middleup 模拟鼠标中键按下 
  dx 根据是否指定了mouseeventf_absolute标志,指定水平方向的绝对位置或相对运动 
  dy 根据是否指定了mouseeventf_absolute标志,指定垂直方向的绝对位置或相对运动 
  dwdata amount of wheel movement
  dwextrainfo,通常未用的一个值。用getmessageextrainfo函数可取得这个值。可用的值取决于特定的驱动程序。

  例如:将mouse移动到坐标(450,100) 可用函数:

  setcursorpos(450,100) ; 或
  mouse_event(mouseeventf_move ,0,450,100,getmessageextrainfo()); 来实现

  实现鼠标单击:
  mouse_event(mouseeventf_leftdown,0,0,0,getmessageextrainfo());
  mouse_event(mouseeventf_leftup,0,0,0,getmessageextrainfo ());


  那么,如何模拟mouse不断的移动和点击呢?这需要用定时器完成。

  以c为例:

  在初始化程序的时候,设置时钟:
...
case wm_create:
  ...
  settimer(1, 1000, null);
  break;

  这样就设置了id号为1 的时钟事件, 它每秒(1000毫秒)将产生一个 wm_timer事件。
  然后我们在wm_timer事件中将入相关的处理:

case wm_timer:
{
  ...
  // mouse move code...
  // mouse click code...
  break;
}

在delphi中,时钟是通过一个timer控件实现的。

关于时钟事件的运用在此软件中是很基本的一个概念。几乎所有的工作都是在时钟事件中完成的。如需进一步的了解时钟的用法,请查阅相关资料。


如何实现自动滚屏?我就不细说了,有这么几种方法,我都试过,保证没有问题:

1. 找到ie的当前窗口后,向其发送 scrool消息。
2. 找到ie的scrool消息,结合前面的mouse点击方式,自动点击scroll条
3. 可以调用ie的com接口。使用 ihtmldocument接口,调用put_scrolltop即可完成。另外,其实这个作弊软件是可以全部调用ie的cm接口来完成的。主要文档可参阅 msdn. 那些以 ihtmlxxxxxx开头的都是ie的com接口。 (/)

 ↓相关文章:
© 2006-2008 All Rights Reserved