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