再继续
上一节说到取游戏窗口的位置,那么取到的窗口坐标是游戏窗口最左上角开始计算的,因为游戏里的小窗口是固定的,所以不管游戏窗口怎么改变位置,相对位置是不会变的。
继续设计,思路:
取到坐标点后,利用取屏幕颜色坐标来获取指定的的颜色,我们就可以作为分析游戏血蓝的信息了。
每次游戏重新启动后,固定位置可能发生变化,那么我们需要一个可以快速获取坐标和颜色的方法,要直观且方便。
所以,我们采取的方法就是 ,利用截屏技术,获取游戏窗口上一部分的游戏画面,把动态的转为静态,再在静态图上获取颜色点。
下面是实现代码:
Private Sub SetPicPixel(mx As Long, my As Long)
GameFormDC = GetDC(GameFormHwnd)
Dim i As Long, j As Long, pdx As Long, pdy As Long
pdx = Picture2.Width
pdy = Picture2.Height
BitBlt Picture2.hdc, 0, 0, pdx, pdy, GameFormDC, mx - pdx / 2, my - pdy / 2, SRCCOPY
SetPixel Picture2.hdc, pdx \ 2, pdy \ 2, vbWhite
Picture2.Refresh
ReleaseDC GameFormHwnd, GameFormDC
Picture3.PaintPicture Picture2.Image, 0, 0, Picture2.Width * (Picture3.Width / Picture2.Width), Picture2.Height * (Picture3.Width / Picture2.Width)
End Sub
在窗口上放置2个PictureBox 控件,名字为 Picture2 和 Picture3
这段代码的功能就是,在已经获取了游戏窗口句柄后,通过API函数,将游戏窗口的一部分画面绘制到Picture2 上,在经过放大处理,绘制到Picture3 上
效果图如下:
经过放大以后,就可以利用中间的白点,上下左右移动,获取我们需要的坐标了,当然,相对坐标必须弄清楚,不然取不到正确的坐标。
当取色和取坐标模块完成的时候,我们就可以开始设计真正有用的部分了。
在武林还可以模拟按键的时候,我们用模拟按键最方便,不用去分析游戏庞大的内存,就可以很简单的控制游戏打怪捡物等。
到这里差不多可以设计挂的各个功能了,至于怎么设计,每人的算法可能都不太一样,下面我就把颜色版的完整源码传上来。里面基本上没有注释,呵呵,因为我太懒勒。有什么不明白的地方,回帖或发帖,我隔段时间就回来看看,和大家一起交流交流。
下一节,我们正式进入 内挂的制作学习中