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

时间:2024-05-02 20:54:07

一、程序效果

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

 二、实现

先截屏,然后利用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");

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

 再模拟点击小程序

 然后依次完成自动购物