也谈QQ美女找茬外挂的编写

    技术2022-05-18  16

    不久前发表在首页的QQ美女找茬(外挂)学习笔记一文让我深受启发,我看了该文章后,也自己动手实现了一个外挂,效果挺不错的。请看截图:从图中可以看出,我没有让结果显示在原游戏窗口中,而是显示在了外挂窗口中。这么做是为了实现起来简单。我的实现的确是很简单的:先通过向导创建一个SDI项目,再在工具栏上添加一个按钮,再为该按钮添加事件处理程序即可,所有的代码都在这个事件处理程序中。另外,要感谢MFC为我们提供的CDC类、CBitmap类以及ATL提供的CImage类。代码很简单,简单得我都懒得解释了:

    void  CI_Love_BeautyView::OnFind(){     // 游戏中图片的位置及大小      int  nPicWidth  =   498 - 1 ;       int  nPicHeight  =   448 ;     int  nOffsetLeftPicX  =   8 ;     int  nOffsetLeftPicY  =   193 ;     int  nOffsetRightPicX  =   516   +   1 ;     int  nOffsetRightPicY  =   193 ;     // 获取游戏窗口指针     CWnd *  pGame  =  FindWindow(NULL, _T( " 大家来找茬 " ));         // 将游戏数据复制到两个CBitmap对象中     CDC  * pSrcDC = pGame -> GetDC();     CDC memDC;        memDC.CreateCompatibleDC(pSrcDC);    CBitmap bitmap_left;    bitmap_left.CreateCompatibleBitmap(pSrcDC,nPicWidth,nPicHeight);     CBitmap bitmap_right;    bitmap_right.CreateCompatibleBitmap(pSrcDC,nPicWidth,nPicHeight);     // 获取左边的图片     CBitmap *  pOldBitmap  =  memDC.SelectObject( & bitmap_left);          memDC.BitBlt( 0 , 0 ,nPicWidth,nPicHeight,pSrcDC,nOffsetLeftPicX,nOffsetLeftPicY,SRCCOPY);     // 获取右边的图片     memDC.SelectObject( & bitmap_right);          memDC.BitBlt( 0 , 0 ,nPicWidth,nPicHeight,pSrcDC,nOffsetRightPicX,nOffsetRightPicY,SRCCOPY);    memDC.SelectObject(pOldBitmap);     // 创建两个CImage对象,然后逐像素比较     CImage image_left;    CImage image_right;    image_left.Attach(bitmap_left);    image_right.Attach(bitmap_right);         for ( int  i = 0 ; i < nPicWidth;i ++ ){         for ( int  j = 0 ; j < nPicHeight; j ++ ){             if (image_left.GetPixel(i,j)  !=  image_right.GetPixel(i,j)){                image_left.SetPixel(i,j,RGB( 255 , 0 , 0 ));            }        }    }     // 显示结果     CClientDC dc( this );    image_left.BitBlt(dc, 0 , 0 );}


    最新回复(0)