首页 > 系统相关 >c#胖东来小程序自动购物程序(接单,windows桌面程序、linux程序、网络应用等等)

c#胖东来小程序自动购物程序(接单,windows桌面程序、linux程序、网络应用等等)

时间:2024-05-02 21:12:42浏览次数:24  
标签:matchLoc Mat c# 程序 templ windows 点击 out

一、程序效果

自动打开胖东来小程序,自动购物

 二、实现

先截屏,然后利用opencv库识别下一步按键所在位置,然后使用mouse_event控制鼠标,模拟人的动作

第一步,截取屏幕

static Bitmap CaptureScreen()
{
    int screenWidth = Screen.PrimaryScreen.Bounds.Width;
    int screenHeight = Screen.PrimaryScreen.Bounds.Height;
    Bitmap screenshot = new Bitmap(screenWidth, screenHeight);
    using (Graphics graphics = Graphics.FromImage(screenshot))
    {
        graphics.CopyFromScreen(0, 0, 0, 0, new System.Drawing.Size(screenWidth, screenHeight));
    }

    return screenshot;
}    

第二步,利用opencv库识别出位置

微信主界面如下

 想要打开小程序,可以识别出上部的搜索栏,点击并输入,首先,需要截取出需要点击的位置

 clickPicture的功能就是先截屏,然后选择路径为path的图片,利用MatchTemplate比较得出图片位置,模拟鼠标点击

static void clickPicture(string path)
{
    Mat img = OpenCvSharp.Extensions.BitmapConverter.ToMat(CaptureScreen()).CvtColor(ColorConversionCodes.RGB2BGR);
    Mat templ = new Mat(path, ImreadModes.Color);
    Mat result = new Mat();
    Cv2.MatchTemplate(img, templ, result, TemplateMatchModes.CCoeffNormed);
    Cv2.MinMaxLoc(result, out _, out var maxVal, out var minLoc, out var maxLoc);
    var matchLoc = maxLoc;
    MouseEvent(MouseEventType.LeftDown, matchLoc.X + templ.Cols / 2, matchLoc.Y + templ.Rows / 2);
    Thread.Sleep(100); // 可以添加一些延迟以模拟人工点击
    MouseEvent(MouseEventType.LeftUp, matchLoc.X + templ.Cols / 2, matchLoc.Y + templ.Rows / 2);
}

然后模拟键盘输入胖东来

Clipboard.SetText("胖东来");
SendKeys.SendWait("^v");

模拟点击下面的小程序搜索

 再模拟点击小程序

 然后依次完成自动购物

标签:matchLoc,Mat,c#,程序,templ,windows,点击,out
From: https://www.cnblogs.com/likaiming/p/18170566

相关文章

  • 使用新版flask-script时报错No module named flask._compat和cannot import name ‘_r
    flask版本:3.0.3Flask-Script:2.0.6Flask-script使用及错误Nomodulenamedflask._compat解决方法windows下推荐解决方案,点击flask_script进入init.py文件或虚拟环境\Lib\site-packages\flask_script_init_.pylinux下cd到目录/usr/local/lib/python3.12/site-packages......
  • Codeforces 1044F DFS
    考虑到存在方案使得以\(u\)为起点还能走出原树的条件。能发现是以\(u\)为根,在原树上新添加的边只会是返祖边而不会有横叉边。这是因为如果有横叉边就肯定会在遍历到一边的点后先通过这条边走到另一边的点,就算上了这条边就不是原树了。那么考虑\((x,y)\),合法的\(u\)需要......
  • c语言实现vector及其相关函数(自存)
    #include<stdio.h>#include<stdlib.h>#definePREALLOC_MAX1024#defineDEFAULT_CAPACITY8typedefintE;typedefstruct{E*elements;//指向堆空间的数组intsize;//元素的个数intcapacity;//数组的容量}Vector;voidpush_back(Vect......
  • 长江存储PC411 512GB SSD实测:旗舰读写性能 温度表现逆天
    一、前言:搭载长江存储PC411512GBSSD的机械革命蛟龙16S不久前我们测试过某品牌的笔记本,其搭载的PCIe4.0SSD在高负载运行时温度轻松突破70度,导致性能下降了20%左右。对于笔记本而言,由于无法像台式电脑那样给SSD安装厚重的散热装甲,在搭载高性能PCIe4.0SSD时,很容易出现温度失......
  • WPF Slider Show integral value TickFrequency="1" IsSnapToTickEnabled="True"
    <Windowx:Class="WpfApp85.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • SystemVerilog -- 2.6 Data Types ~ SystemVerilog Dynamic Arrays
    SystemVerilogDynamicArraysDynamicArrays是一个unpackedArrays,其大小可以在运行时设置或更改。因此与静态数组完全不同,静态数组的大小是在数组声明期间预先确定的。DynamicArrays的默认大小为零,直到由构造函数设置。new()SyntaxDynamicArray的尺寸由空方括号指定。[][d......
  • acwing351
    https://www.acwing.com/activity/content/problem/content/9051/NOIP2007提高组T4。本题是加强版。题目描述设\(T=(V,E,W)\)是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我们称\(T\)为树网(treenetwork),其中\(V,E\)分别表示结点与边的集合,\(W\)表示各边......
  • day30-JavaScript(2)
    1、BOM对象BOM:Broswerobjectmodel,即浏览器提供我们开发者在javascript用于操作浏览器的对象。1.1、window对象窗口方法//BOMBrowserobjectmodel浏览器对象模型//js中最大的一个对象.整个浏览器窗口出现的所有东西都是window对象的内容.console.log(window);......
  • D2. Reverse Card (Hard Version)
    D2.ReverseCard(HardVersion)Thetwoversionsaredifferentproblems.Youmaywanttoreadbothversions.Youcanmakehacksonlyifbothversionsaresolved.Youaregiventwopositiveintegers$n$,$m$.Calculatethenumberoforderedpairs$(a,b)$......
  • 04. C语言数据使用方式
    【C语言简介】计算机的运行由CPU指令控制,为了让计算机执行指定功能,需要将这些功能对应的指令数据集中存储在一起,制作为一个计算机文件,这个文件称为程序,CPU通过读取程序中的指令确定要执行的功能,制作程序时无需直接编写指令数据和数学数据,这些数据使用代码表示,从而方便记忆和编写,......