コード例 #1
0
ファイル: MainForm.cs プロジェクト: fuuers/AutoClickScript
        /// <summary>
        /// 与所有UI进行对比,取最相似的发送消息
        /// </summary>
        private void Start2()
        {
            while (true)
            {
                Thread.Sleep(500);//截图不应过于频繁
                ImageInfo form_img = new ImageInfo();
                try
                {
                    form_img = WinApi.GetWindowCapture(processInfo._Handle);

                    int diff  = 999;
                    int index = 999;
                    if (form_img != null && form_img._img != null)
                    {
                        for (int i = 0; i < list_UI.Count; i++)
                        {
                            UiInfo    ui_info = list_UI[i].uiInfo;
                            ImageInfo now_ui  = Common.GetNowUi(form_img._img, ui_info._img);
                            UpdateImage(now_ui._img);

                            int temp = Common.GetImageDiffCount(now_ui, ui_info._img);
                            if (temp < diff)
                            {
                                diff  = temp;
                                index = i;
                            }
                        }
                        if (index < list_UI.Count && diff < 10)
                        {
                            WinApi.SendMsg(list_UI[index].uiInfo._clickLoca.X, list_UI[index].uiInfo._clickLoca.Y, processInfo._Handle);
                            Thread.Sleep(500);
                        }
                        else
                        {
                            string[] temps = txtFree.Text.Split(',');
                            if (temps.Length > 1)
                            {
                                WinApi.SendMsg(int.Parse(temps[0]), int.Parse(temps[1]), processInfo._Handle);
                            }
                            Thread.Sleep(300);
                        }
                    }

                    form_img?._img?.Dispose();
                    form_img = null;
                }
                catch (Exception ex)
                {
                    form_img?._img?.Dispose();
                    form_img = null;
                }
            }
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: fuuers/AutoClickScript
        /// <summary>
        /// 逐一对比,如果相似(汉明距离小于10)就发送消息
        /// </summary>
        private void Start1()
        {
            while (true)
            {
                Thread.Sleep(500);//截图不应过于频繁
                ImageInfo form_img = new ImageInfo();
                try
                {
                    form_img = WinApi.GetWindowCapture(processInfo._Handle);

                    if (form_img != null && form_img._img != null)
                    {
                        for (int i = 0; i < list_UI.Count; i++)
                        {
                            UiInfo    ui_info = list_UI[i].uiInfo;
                            ImageInfo now_ui  = Common.GetNowUi(form_img._img, ui_info._img);
                            UpdateImage(now_ui._img);
                            if (Common.IsSameImage(ui_info._img, now_ui))
                            {
                                WinApi.SendMsg(ui_info._clickLoca.X, ui_info._clickLoca.Y, processInfo._Handle);
                                Thread.Sleep(500);
                                break;
                            }
                            else
                            {
                                string[] temps = txtFree.Text.Split(',');
                                if (temps.Length > 1)
                                {
                                    WinApi.SendMsg(int.Parse(temps[0]), int.Parse(temps[1]), processInfo._Handle);
                                }
                                Thread.Sleep(300);
                            }
                            now_ui._img.Dispose();
                            now_ui = null;
                        }
                    }
                    form_img?._img?.Dispose();
                    form_img = null;
                }
                catch (Exception ex)
                {
                    form_img?._img?.Dispose();
                    form_img = null;
                }
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: fuuers/AutoClickScript
        /*
         *
         *
         *  5678
         *  3478
         *  2468
         *
         *
         * 000    1
         * 001    2
         * 010    3
         * 011    4
         * 100    5
         * 101    6
         * 110    7
         * 111    8
         *
         */

        #region ==============================方法

        /// <summary>
        /// 添加UI
        /// </summary>
        /// <param name="ui"></param>
        private void AddNewUI(Bitmap img, Point img_loca, Point click_loca, bool isLoad)
        {
            UiInfo ui = new UiInfo(img.Clone() as Bitmap, img_loca, click_loca);

            if (isLoad)
            {
                ui._img._relativeLocal = img_loca;
                ui._clickLoca          = click_loca;
            }

            UiControl ui_ctr = new UiControl();

            ui_ctr.TabIndex      = list_UI.Count;
            ui_ctr.Location      = CalculateUiLoca(list_UI.Count);
            ui_ctr.uiInfo        = ui;
            ui_ctr.DoFixImage    = FixImage;
            ui_ctr.DoDeleteImage = DeleteImage;

            ui_ctr.TextLoca = ui._clickLoca.X + "," + ui._clickLoca.Y;
            ui_ctr.UiImage  = ui._img._img;
            this.tabControl1.TabPages[0].Controls.Add(ui_ctr);
            this.list_UI.Add(ui_ctr);
        }