一、程式效果
自動開啟胖東來小程式,自動購物
二、實現
先截圖,然後利用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");
模擬點選下面的小程式搜尋
再模擬點選小程式
然後依次完成自動購物