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

本文介绍了一种利用MFC和ATL库实现找茬游戏辅助工具的方法。通过抓取游戏窗口中的图像并进行像素级对比,实现了快速找出两幅图片间的不同之处。此过程涉及窗口句柄获取、位图对象创建、像素颜色读取等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不久前发表在首页的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 );
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值