c#胖東來小程式自動購物程式(接單,windows桌面程式、linux程式、網路應用等等)

番茄汁汁發表於2024-05-02

一、程式效果

自動開啟胖東來小程式,自動購物

二、實現

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

模擬點選下面的小程式搜尋

再模擬點選小程式

然後依次完成自動購物

相關文章