Delphi实现图像识别制作外挂

最近应几个朋友的要求帮他们做一个QQ斗地主的外挂,于是就研究了下。(比较简单,希望大家不要笑化^_^)
网上有做外挂文章,找了,看了,试着理解了,但水平有限,貌似不是很明白,但总的来说就三种
1,封包技术(个人认为是最难的,但是效果出来是最好的,因为里面还涉及到解密技术所以个人认为是有些难度的,工作量达);
2,内存扫描
3,图像识别(个人认为是比较大众化的,也最容易实现的,但效果也是最差的,而且束缚比较的多);

 

前面2个我不说了,就说第三个我所用的方法以及个人认为关键的地方以及部分代码
1,不用说肯定是findWindow  找斗地主窗口句柄,然后    insertfrm := TFrmInsert.CreateParented(DDZhwd);//可以实现把窗口插入到游 戏面板中了。。。
2, GetWindowRect(DDZhwd, DDZr);//获得斗地主场景图片
  //开始获取QQ斗地主界面图片
  DDZWorkbitmap := TBitmap.Create; //创建内存存储斗地主界面图片,用来分析象素点
  DDZhdc := GetWindowDC(DDZhwd); //获取界面设备场景
  CanvasCource := TCanvas.Create;
  CanvasCource.Handle := DDZhdc;
  DDZWorkbitmap.Width := DDZr.Right - DDZr.Left; //斗地主界面距离
  DDZWorkbitmap.Height := DDZr.Bottom - DDZr.Top;
  DDZWorkbitmap.Canvas.CopyRect(DDZWorkbitmap.Canvas.ClipRect, CanvasCource, DDZR); //copy斗地主界面场景3,以上是关键代码,接下来就是捕捉象素点了,大家如果仔细察看下扑克牌会发现,扑克牌的边框都是clblack的,大概明白了吧,然后是 如何识别是什么牌,如果仔细研究下就会发现不同的牌肯定会有一个象素点是区别于其他牌的。。。因此就可以捕捉到了牌就可以实现记牌的功能了。。。
象素点可以用  DDZWorkbitmap.Canvas.Pixels[210, 595]  获取。。。具体看帮助
4,关于“开始”可以捕捉最上面的三张牌,如果没有了表明一副牌还没开始。。。
5,大致的关键点都已说明,由于是象素识别的所以在一些扑克牌不能别遮盖住,个人感觉执行起来而且效率不是很高,所以不推荐这种方法。。。可以往内存扫描,和封包方向的方法尝试。。。

 

来源:www.51bcw.com

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

xinmeng08

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值