コード例 #1
0
ファイル: FunctionClick.cs プロジェクト: DNoki/NokiKanColle
        /// <summary>
        /// 鼠标点击指令
        /// </summary>
        /// <param name="GameHandle"></param>
        /// <param name="xy"></param>
        /// <param name="delayTime"></param>
        /// <param name="OffsetX"></param>
        /// <param name="OffsetY"></param>
        /// <returns></returns>
        public static Point Click(GameHandleClass GameHandle, Point xy, int delayTime, int OffsetX = 0, int OffsetY = 0)
        {
            try
            {
                GlobalObject.GetUIForm().ChangeClickCoordinate($"{xy.X},{xy.Y}", 2);
                if (!GameHandle.IsSuccess)
                {
                    throw new Exceptions.NoGameHandleException();
                }

                Delay(delayTime + 50);                       //延迟

                var OffsetXY = new Point(OffsetX, OffsetY);  //序列坐标偏移
                OffsetXY.Offset(GlobalObject.ClickOffsetXY); // 游戏窗口偏移坐标(poi)// //手动坐标偏移
                xy.Offset(OffsetXY);

                PreviousXY = xy;//记录本次点击坐标

                Delay(Random(100, 300));
                if (GameHandle.Mode == FunctionHandle.MODE.Handle)
                {
                    ClickInHandle(GameHandle, xy, OffsetXY);
                }
                else if (GameHandle.Mode == FunctionHandle.MODE.Desktop)
                {
                    ClickInScreen(xy, GameHandle.XY);
                }
                else if (GameHandle.Mode == FunctionHandle.MODE.Chorme)
                {
                    xy.Offset(GameHandle.XY);
                    OffsetXY.Offset(GameHandle.XY);
                    ClickInHandle(GameHandle, xy, OffsetXY);
                }
                else
                {
                    throw new Exceptions.DataErrorException("无法识别正确的游戏取色模式!");
                }
                Delay(Random(200, 400));
                return(PreviousXY);
            }
            finally
            {
                GlobalObject.GetUIForm().ChangeClickCoordinate($"{xy.X},{xy.Y}", 1);
            }
        }
コード例 #2
0
        //窗口句柄相关成员
        /// <summary>
        /// 自动后台模式
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GameWindow_AutoHandle_button_Click(object sender, EventArgs e)
        {
            //自动查找游戏句柄
            int SH = Screen.PrimaryScreen.Bounds.Height; //屏幕分辨率高度
            int SW = Screen.PrimaryScreen.Bounds.Width;  //屏幕分辨率宽度

            using (GameHandleClass SeekHandle = new GameHandleClass())
            {
                SeekHandle.Mode = FunctionHandle.MODE.Handle;
                Point XY = new Point(0, 0);
                do
                {
                    SeekHandle.Handle = FunctionHandle.WindowFromPoint(XY);
                    if (XY.X > SW)
                    {
                        XY.X  = 0;
                        XY.Y += 100;
                    }
                    else
                    {
                        XY.X += 100;
                    }
                    if ((XY.X > SW) && (XY.Y > SH))
                    {
                        this.GameWindow_Message_textBox.Text      = "自动后台模式抓取失败╭இɷஇ╮";
                        this.GameWindow_Message_textBox.BackColor = Color.Red;
                        GlobalObject.GameHandle = new GameHandleClass();
                        RefreshGameWindow_pictureBox();
                        return;
                    }
                } while (!SeekHandle.IsWin_800x480());

                GlobalObject.GameHandle      = new GameHandleClass(SeekHandle);
                GlobalObject.GameHandle.Mode = FunctionHandle.MODE.Handle;  // 更改模式
                RefreshGameWindow_treeView(GlobalObject.GameHandle.Handle); // 刷新树状图
                this.GameWindow_Message_textBox.Text      = "后台模式抓取成功 句柄:" + GlobalObject.GameHandle.Handle.ToString();
                this.GameWindow_Message_textBox.BackColor = Color.Lime;
                RefreshGameWindow_pictureBox();
            }
        }
コード例 #3
0
        /// <summary>
        /// Chorme指定句柄模式
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GameWindow_Handle_button_Click(object sender, EventArgs e)
        {
            GameWindow_IsHandleClick = true;
            using (GameHandleClass SeekHandle = new GameHandleClass())
            {
                try
                {
                    this.GameWindow_InputIntPtr_textBox.BackColor = Color.White;
                    var result = int.Parse(this.GameWindow_InputIntPtr_textBox.Text);
                    SeekHandle.Handle = new IntPtr(result);
                }
                catch (Exception)
                {
                    this.GameWindow_InputIntPtr_textBox.BackColor = Color.Red;
                }
                SeekHandle.Mode = FunctionHandle.MODE.Handle;

                Point xy = new Point();
                if (FunctionJudge.IsGameInWin(SeekHandle.GetGameBitmap(), out xy))
                {
                    GlobalObject.GameHandle = new GameHandleClass(SeekHandle)
                    {
                        Mode = FunctionHandle.MODE.Chorme,
                        XY   = xy
                    };
                    RefreshGameWindow_treeView(GlobalObject.GameHandle.Handle);
                    this.GameWindow_Message_textBox.Text      = "后台模式抓取成功 chorme句柄:" + GlobalObject.GameHandle.Handle.ToString();
                    this.GameWindow_Message_textBox.BackColor = Color.Lime;
                    RefreshGameWindow_pictureBox();
                }
                else
                {
                    RefreshGameWindow_treeView(SeekHandle.Handle);
                    this.GameWindow_Message_textBox.Text      = "后台模式抓取失败 句柄:" + SeekHandle.Handle.ToString();
                    this.GameWindow_Message_textBox.BackColor = Color.Red;
                    GlobalObject.GameHandle = new GameHandleClass();
                    RefreshGameWindow_pictureBox();
                }
            }
        }
コード例 #4
0
 /// <summary>
 /// 手动后台模式
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GameWindow_treeView_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (e.KeyChar != 13)
     {
         return;
     }
     else
     {
         //指定窗口句柄查找游戏窗口
         using (GameHandleClass SeekHandle = new GameHandleClass())
         {
             SeekHandle.Handle = (IntPtr)Convert.ToInt32(GameWindow_HandleList_treeView.SelectedNode.Text);
             SeekHandle.Mode   = FunctionHandle.MODE.Handle;
             Point xy = new Point();
             if (FunctionJudge.IsGameInWin(SeekHandle.GetGameBitmap(), out xy))
             {
                 GlobalObject.GameHandle = new GameHandleClass(SeekHandle)
                 {
                     Mode = FunctionHandle.MODE.Chorme,
                     XY   = xy
                 };
                 RefreshGameWindow_treeView(GlobalObject.GameHandle.Handle);
                 this.GameWindow_Message_textBox.Text      = "后台模式抓取成功 chorme句柄:" + GlobalObject.GameHandle.Handle.ToString();
                 this.GameWindow_Message_textBox.BackColor = Color.Lime;
                 RefreshGameWindow_pictureBox();
             }
             else
             {
                 RefreshGameWindow_treeView(SeekHandle.Handle);
                 this.GameWindow_Message_textBox.Text      = "后台模式抓取失败 句柄:" + SeekHandle.Handle.ToString();
                 this.GameWindow_Message_textBox.BackColor = Color.Red;
                 GlobalObject.GameHandle = new GameHandleClass();
                 RefreshGameWindow_pictureBox();
             }
         }
     }
 }
コード例 #5
0
        /// <summary>
        /// Chorme后台模式
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GameWindow_Handle_button_MouseCaptureChanged(object sender, EventArgs e)
        {
            if (GameWindow_IsHandleClick)
            {
                GameWindow_IsHandleClick = false;
                return;
            }
            //手动查找游戏句柄
            using (GameHandleClass SeekHandle = new GameHandleClass())
            {
                SeekHandle.Handle = FunctionHandle.GetMouseHandle();
                SeekHandle.Mode   = FunctionHandle.MODE.Handle;

                if (SeekHandle.IsWin_800x480())
                {
                    GlobalObject.GameHandle = new GameHandleClass(SeekHandle)
                    {
                        Mode = FunctionHandle.MODE.Handle
                    };
                    RefreshGameWindow_treeView(GlobalObject.GameHandle.Handle);
                    this.GameWindow_Message_textBox.Text      = "后台模式抓取成功 句柄:" + GlobalObject.GameHandle.Handle.ToString();
                    this.GameWindow_Message_textBox.BackColor = Color.Lime;
                    RefreshGameWindow_pictureBox();
                    return;
                }
                else//chorme模式
                {
                    SeekHandle.Mode = FunctionHandle.MODE.Handle;
                    Point xy = new Point();
                    if (FunctionJudge.IsGameInWin(SeekHandle.GetGameBitmap(), out xy))
                    {
                        GlobalObject.GameHandle = new GameHandleClass(SeekHandle)
                        {
                            Mode = FunctionHandle.MODE.Chorme,
                            XY   = xy
                        };
                        RefreshGameWindow_treeView(GlobalObject.GameHandle.Handle);
                        this.GameWindow_Message_textBox.Text      = "后台模式抓取成功 chorme句柄:" + GlobalObject.GameHandle.Handle.ToString();
                        this.GameWindow_Message_textBox.BackColor = Color.Lime;
                        RefreshGameWindow_pictureBox();
                    }
                    else
                    {
                        // 尝试根父句柄的抓取
                        SeekHandle.Handle = FunctionHandle.GetTopFatherHandle(SeekHandle.Handle);
                        SeekHandle.Mode   = FunctionHandle.MODE.Handle;

                        if (FunctionJudge.IsGameInWin(SeekHandle.GetGameBitmap(), out xy))
                        {
                            GlobalObject.GameHandle = new GameHandleClass(SeekHandle)
                            {
                                Mode = FunctionHandle.MODE.Chorme,
                                XY   = xy
                            };
                            RefreshGameWindow_treeView(GlobalObject.GameHandle.Handle);
                            this.GameWindow_Message_textBox.Text      = "后台模式抓取成功 chorme句柄:" + GlobalObject.GameHandle.Handle.ToString();
                            this.GameWindow_Message_textBox.BackColor = Color.Lime;
                            RefreshGameWindow_pictureBox();
                        }
                        else
                        {
                            RefreshGameWindow_treeView(SeekHandle.Handle);
                            this.GameWindow_Message_textBox.Text      = "后台模式抓取失败 句柄:" + SeekHandle.Handle.ToString();
                            this.GameWindow_Message_textBox.BackColor = Color.Red;
                            GlobalObject.GameHandle = new GameHandleClass();
                            RefreshGameWindow_pictureBox();
                        }
                    }
                }
            }
        }