制作联众找茬外挂

制作外挂,首先要做一个鼠标的钩子,这个大家应该都知道.以下简单描述一下

SetWindowsHookEx 装载钩子

UnHookWindowsHookEx 卸载钩子

示例

hHk := SetWindowsHookEx(WH_MOUSE,@MouseHookProc,Hinstance,0);

写一个处理函数function MouseHookProc,将需要的鼠标信息通过SendMessage送一个自定义信息WM_CTRLCURSORPOS给主窗体

有了鼠标点击动作和点击位置的信息以后就好办了.

主窗体中用Procedure TForm1.WMCtrlCursorPos(var Msg:TMessage);来处理捕获到的WM_CTRLCURSORPOS消息

LParam中包含鼠标位置信息

用WindowFromPoint得到鼠标下面游戏窗体的handle

用GetWindowDC得到游戏窗口的dc

用GetWindowRect得到游戏窗口的大小和位置

创建一个游戏窗口的canvas 

mycan:=TCanvas.Create;
  Mycan.Handle := dc;

创建bmp1,bmp2从指定位置将游戏窗口的两个图片复制下来,

bmp1.Canvas.CopyRect(dstrect,mycan,srcrect);

bmp2.Canvas.CopyRect(dstrect,mycan,srcrect);

比较两个图片,如果有不同的象素点,则画成兰色

      if bmp1.Canvas.Pixels[i,j]<>bmp2.Canvas.Pixels[i,j] then
      begin
        bmp1.Canvas.Pixels[i,j]:=clblue;
      end;

将比较结果用image显示在窗体上

然后在过一些小的调整,设置窗体属性为stayontop,一直在最上面

为image控件加一个mouseup 事件.当触发的时候模拟点击游戏画面.这样的话你就可以直接点主窗体上兰色的小框框就可以把图片中不同的地方找出来了

setcursorpos(temprect.Left+96+x,temprect.Top+31+y);设置鼠标位置为游戏窗体的左上角加图片偏依量加x或y

  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

用MOUSEEVENTF_LEFTDOWN加上MOUSEEVENTF_LEFTUP模拟一次左键单击

  temp.X:=x;
  temp.Y:=y;
  temp:=clienttoscreen(temp);
  setcursorpos(temp.X,temp.Y);

在把鼠标放回原来位置

大家可以试一下,很方便的哦.

要源码的可以留下邮件地址

点击这里下载可运行压缩文件

阅读更多
文章标签: 游戏 image function
个人分类: delphi
上一篇如何在启动机器时自动运行adsl拨号(2)
下一篇自己动手编写devExpress组件自动安装程序
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭