前面我们讲述了一个按键精灵的实现,现在的问题如何监视HP 既血的变化,来控制 补血.
先看下面几个API函数:
[ DllImport ( "gdi32.dll" ) ]
private static extern bool BitBlt (
IntPtr hdcDest, // 目标设备的句柄
int nXDest, // 目标对象的左上角的X坐标
int nYDest, // 目标对象的左上角的X坐标
int nWidth, // 目标对象的矩形的宽度
int nHeight, // 目标对象的矩形的长度
IntPtr hdcSrc, // 源设备的句柄
int nXSrc, // 源对象的左上角的X坐标
int nYSrc, // 源对象的左上角的X坐标
int dwRop // 光栅的操作值
);



[ DllImport ( "gdi32.dll" ) ]
private static extern IntPtr CreateDC (
string lpszDriver, // 驱动名称
string lpszDevice, // 设备名称
string lpszOutput, // 无用,可以设定位"NULL"
IntPtr lpInitData // 任意的打印机数据
);


我们从游戏屏幕上 捕获 左上角用来显示血多少的数值颜色 的变化来实现监视.
第一个函数BitBlt 就是用来截屏的.前面我们定义了timer2,下在我们来看看他是用来做什么的:
我们用temp1 和temp2分别捕获了屏幕上2点的颜色,然后看他们的RGB值,如果他们同时为0xFFFFFF那么就意味这2点都变成了白色,说明,HP直低于200了,这时就需要补血了,于是执行System.Windows.Forms.SendKeys.Send,其中的count和beforeCount 用来缓冲,时间是this.timer2.Interval * 3 .
这样,一个外挂就实现了!
相关文章:
-
2021-07-24
-
2021-12-29
-
2021-09-14
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2021-12-11