游戏外挂,就是用来作弊的,实现的原理多种多样,本篇文章简要阐述一下连连看类游戏的外挂编写思路。当然了,不止这一种方法。我所采用的是最笨的,也是最简单的方法了(自认为),下面且听李木给你分析一下。
首先,我们需要获得游戏窗口,既然我们用MFC来写,那当然要用已经封装好的类了,定义CWnd* m_wndGame,在这我自己编写一个FindWindow的函数,并在其中比较我们知道的信息,例如窗口名称的宽高。
在将所有窗口一个一个比较之后,我们得到了想要的游戏的m_wndGame,注意,这是一个类对象,能干很多事情。
接下来做的就是将游戏窗口画下来。这样做:
//获取窗口的窗口设备描述表 CDC* pDCGame = m_wndGame->GetWindowDC(); //创建设备相关的位图 bmpPicture.CreateCompatibleBitmap(pDCGame, width, height); //创建合适的设备描述表 CDC dcMem; dcMem.CreateCompatibleDC(pDCGame); //将新创建的位图选入设备描述表 dcMem.SelectObject(bmpPicture); //从窗口上复制位图到内存设备描述表 dcMem.BitBlt(0, 0, width, height, pDCGame, left, top, SRCCOPY); dcMem.DeleteDC();
其中bmpPicture是我们已经定义好的了CBitmap对象。
有了图片信息之后,就可以对其进行操作了,先将其分割成独立的小图片单元,并为其建立链表,怎么判断图片相同是个问题,在这里我们可以这样比较:取出图片中的几个像素,比较之后完全一样的话,就可以认为这图片是一样的,为了增加正确几率,可以将比较的像素多设置几个。
识别完成之后,就会得到各个图片的信息,然后要做的就是配对儿了,还是一个一个对比,能够链接成功则返回两个图片的位置。
还有一个重要的环节,就是模拟鼠标进行点击,为窗口发送消息就可以了
m_wndGame->SendMessage(WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
来一张效果图片吧,我用的是瞬间完成,呵呵:
(友情提示:玩游戏用外挂是很不道德的,我也就不道德了几次,主要是想看看效果,及研究一下原理,远离外挂,正常游戏!)