前段时间看到别人玩QQ游戏,美女来找茬,突然之间想到自己可以做个小外挂,自动比较两幅图,把不同之处标出来。软件自动化测试和开发简单的游戏外挂很相似。都是控制UI,然后模拟键盘和鼠标操作

思路:

1.    把 "美女找茬“ 中的两幅画截出来。

2.    对比两幅画,把不同之处标出来。

我们只需要图片在屏幕上的坐标和大小就可以截图了,根据分析图片大小在高度:490, 宽度:440 比较合适

截图的方法为:

public static int height = 490;
        public static int width = 440;

public static void CaptureScreenToFile(int left, int right, string fileName)
        {
            Bitmap image = new Bitmap(height, width);
            Graphics g = Graphics.FromImage(image);
            g.CopyFromScreen(left, right, 0, 0, image.Size);
            image.Save(fileName);
        }

另外,我们还需要知道图片所在的坐标。 坐标为游戏窗口的坐标+图片在游戏窗口中的位移

为了获取游戏窗口的坐标我们需要使用2个Win32API函数

[StructLayout(LayoutKind.Sequential)]
        public struct RECT
        {
            public int left;
            public int top;
            public int right;
            public int bottom;
        }

[DllImport("user32.dll", EntryPoint = "FindWindow", CharSet = CharSet.Auto)]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
        public static extern IntPtr GetWindowRect(IntPtr hWnd, ref RECT rect);

public Win32API.RECT Pos = new Win32API.RECT();

public void SetPos()
        {
            IntPtr window = Win32API.FindWindow("#32770", "大家来找茬");

Win32API.GetWindowRect(window, ref Pos);
        }

调用SetPos()方法后,就能获取游戏窗口的位置,保存在Pos里。

然后我们截2张图

CaptureScreenToFile(12 + Pos.left, 196 + Pos.top, firstImage);

CaptureScreenToFile(521 + Pos.left, 196 + Pos.top, secondImage);

最后一步就是比较2副图片的不同了,  很简单,逐个像素比较,不同的就用红色表示出来

public static void Compare(string firstImagePath, string secondImagePath, string DifImagePath)
        {
            Bitmap firstImage = new Bitmap(firstImagePath, true);
            Bitmap secondImage = new Bitmap(secondImagePath, true);
            Bitmap thirdImage = new Bitmap(height, width);

string firstPixel;
            string secondPixel;

if (firstImage.Width == secondImage.Width && firstImage.Height == secondImage.Height)
            {
                for (int i = 0; i < firstImage.Width; i++)
                {
                    for (int j = 0; j < firstImage.Height; j++)
                    {
                        firstPixel = firstImage.GetPixel(i, j).ToString();
                        secondPixel = secondImage.GetPixel(i, j).ToString();
                        if (firstPixel != secondPixel)
                        {
                            thirdImage.SetPixel(i, j, Color.Red);                               
                        }
                        else
                        {
                            thirdImage.SetPixel(i, j, firstImage.GetPixel(i, j));
                        }
                    }
                }
            }

firstImage.Dispose();
            secondImage.Dispose();

thirdImage.Save(DifImagePath);
            thirdImage.Dispose();
        }

运行效果:

源代码: http://download.csdn.net/source/3028523

QQ游戏美女找茬外挂相关推荐

  1. 才子佳人与QQ游戏美女找茬外挂实现

    "我未成名君未嫁,可能俱是不如人?",唐朝才子罗隐一生怀才不遇,屡考未中,话说当初以寒士身份赴举,路过锺陵,即今天的江西进贤,结识了当地的一名乐营女子云英,郎才女貌,把酒言欢,一醉 ...

  2. FindDifferent - QQ游戏快速找茬工具

    为什么80%的码农都做不了架构师?>>>    FindDifferent - QQ游戏快速找茬工具 原文来自:http://yhzhtk.info/2013/06/23/1-qq- ...

  3. 【转】菜鸟也来打造全自动QQ大家来找茬外挂

    菜鸟也来打造全自动QQ大家来找茬外挂 转载请注明:www.UNPACK.cn by y3y3y3 定位关键代码 zSound\\ClickRight.wav .text:0042DB40 loc_42 ...

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

    不久前发表在首页的QQ美女找茬(外挂)学习笔记一文让我深受启发,我看了该文章后,也自己动手实现了一个外挂,效果挺不错的.请看截图: 从图中可以看出,我没有让结果显示在原游戏窗口中,而是显示在了外挂窗口 ...

  5. 自己写的QQ美女找茬外挂

    这里首先说一下原理:利用截屏的 技术,讲当前QQ美女找茬的图片截屏下来,然后分析两幅图片相同位置的像素点,当两个点的差大于某个阀值时,将该点的颜色设置为红色. 下面根据 源码具体讲解:     1.首 ...

  6. C#写的QQ找茬外挂

    这个暑假转眼就要过完了.本来打算在学校干两件事:学车和竞赛,结果竞赛没能杀进全国总决赛,想想也是意料中的事.学车就更郁闷了,从上学期开学报名到科目一考试,足足等了近五个月.终于摸到真车了,结果每天冒着 ...

  7. C#编写QQ找茬外挂

    QQ找茬外挂,用C#代码编写. 使用方法 这个工具的主要运行流程很简单: 游戏截图->比较图片->标记图片不同点. 实现代码 截图的处理类ScreenCapture: /// /// 提供 ...

  8. 我们来找茬外挂思路之一

    之前完QQ美女找茬,实在是玩的不给力,两只眼睛都快看不见了...所以就想做个外挂,限于能力,做不了特别犀利的,不过想到一个思路,就是做图片快速切换对比,效果还不错,而且外挂功能只要能截屏切换图片,很是 ...

  9. 基于OpenCV与MFC的大家来找茬外挂[升级版]

    上次编写的大家来找茬外挂虽然是实现了查找不同区域并把不同的区域显示在屏幕上,但是得手动点击,显得很是麻烦,所以最近把程序又改了一改,实现了自动点击功能. 程序的编写流程: 1.做一幅游戏窗口背景图片S ...

最新文章

  1. FCN与U-Net语义分割算法
  2. 一些有用的webservice
  3. java spring 配置文件_[Java教程]Spring配置文件
  4. keystone java,搭建KeystoneJS
  5. 警惕黑客破坏网络安全
  6. 昆明理工大学2017计算机考研题,2017年昆明理工大学现代农业工程学院341农业知识综合三[专业硕士]之计算机网络考研题库...
  7. 深入理解C# 3.x的新特性(2):Extension Method[下篇]
  8. 别了!Python之父!
  9. 程序员误区1:软件开发职业是青春饭
  10. redhat修改mysql编码格式_RedHatLinux下修改MySQL编码方式
  11. 【janino】janino 加载自定义函数
  12. js进阶 11-8 jquery如何获取元素相对于父元素的位置
  13. 怎样利用商业智能软件实现业务目标
  14. 《中国人工智能学会通讯》——11.24 本文的出发点:模仿人类视觉
  15. MySQL数据类型有哪些?
  16. 广告投放系统后台html,今日头条广告如何投放?今日头条广告后台操作说明
  17. Mac制作启动U盘解决重启按option不能识别的问题
  18. 京东手机评论数据集介绍
  19. 用链接法实现散列表构造和查找
  20. 商标被撤三了,重新注册有用吗?

热门文章

  1. SRCNN与FSRCNN
  2. 成都发布BIM计价参考依据,明确BIM服务费计算方式——筑智建
  3. uBlock Origin中文使用手册,告诉你uBlock Origin怎么用!
  4. java 大数据文本去重_python实现文本去重且不打乱原本顺序
  5. “导师制”新型教学模式的探索
  6. android 基站经纬度,android手机获取gps和基站的经纬度地址实现代码
  7. 跨越行业壁垒:金融校对软件在跨国金融业务中的应用
  8. 天空之门手游怎么用电脑玩 天空之门手游模拟器教程
  9. iPhone 隐藏底部 “Dock栏 ”教程
  10. Win11 + wsl2 + xfce4实现可视化ubuntu的问题