예제 #1
0
        private void Handler()
        {
            _interruptFlag = false;

            Task t = Task.Run(() =>
            {
                long clickCounter = 0;

                if (ClickedMouseButton.HasFlag(MouseButtons.Left))
                {
                    _stopWatch.Start();
                    while (!_interruptFlag)
                    {
                        MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.LeftDown);
                        Thread.Sleep(PressDuration);
                        MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.LeftUp);
                        Thread.Sleep(RepeatDelay);
                        clickCounter++;
                    }
                    _stopWatch.Stop();
                }
                else if (ClickedMouseButton.HasFlag(MouseButtons.Right))
                {
                    _stopWatch.Start();
                    while (!_interruptFlag)
                    {
                        MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightDown);
                        Thread.Sleep(PressDuration);
                        MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightUp);
                        Thread.Sleep(RepeatDelay);
                        clickCounter++;
                    }
                    _stopWatch.Stop();
                }

                /*StatisticsRecorder._stopWatch.Start();
                 * while (!_interruptFlag)
                 * {
                 *  if (ClickedMouseButton.HasFlag(MouseButtons.Left))
                 *      MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.LeftDown);
                 *  else if (ClickedMouseButton.HasFlag(MouseButtons.Right))
                 *      MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightDown);
                 *
                 *  Thread.Sleep(PressDuration);
                 *
                 *  if (ClickedMouseButton.HasFlag(MouseButtons.Left))
                 *      MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.LeftUp);
                 *  else if (ClickedMouseButton.HasFlag(MouseButtons.Right))
                 *      MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightUp);
                 *
                 *  Thread.Sleep(RepeatDelay);
                 *  clickCounter++;
                 * }*/

                //StatisticsRecorder._stopWatch.Stop();
                StatisticsRecorder.FinishTest(clickCounter, _stopWatch.ElapsedMilliseconds);
                _stopWatch.Reset();
            });
        }
예제 #2
0
 public ViewportEventArgs(EViewport eventViewport, int x, int y, ClickedMouseButton clickedButton, bool clickedInScreen)
 {
     EventViewport   = eventViewport;
     ClickedX        = x;
     ClickedY        = y;
     ClickedButton   = clickedButton;
     ClickedInScreen = clickedInScreen;
 }
예제 #3
0
        public void IsClicked(MouseState state, Vector2 cursorPos)
        {
            if (ParentScreen.Visible)
            {
                if (!_clicked && state.LeftButton == ButtonState.Pressed || state.RightButton == ButtonState.Pressed)
                {
                    if (Viewport.Bounds.Contains(cursorPos.X, cursorPos.Y))
                    {
                        if (state.LeftButton == ButtonState.Pressed)
                        {
                            _clickedButton = ClickedMouseButton.Left;
                        }
                        else if (state.RightButton == ButtonState.Pressed)
                        {
                            _clickedButton = ClickedMouseButton.Right;
                        }
                        _clicked = true;
                    }
                }
                else if (_clicked)
                {
                    if (_clickedButton == ClickedMouseButton.Left && state.LeftButton == ButtonState.Released)
                    {
                        _clicked = false;
                    }
                    else if (_clickedButton == ClickedMouseButton.Right && state.RightButton == ButtonState.Released)
                    {
                        _clicked = false;
                    }
                    if (!_clicked)
                    {
                        bool inScreen = Viewport.Bounds.Contains(cursorPos.X, cursorPos.Y);
                        var  args     = new ViewportEventArgs(this, (int)((float)(cursorPos.X - this.Viewport.X) / ((float)this.Viewport.Width / (float)this.MaxWidth)), (int)(cursorPos.Y / ((float)this.Viewport.Height / (float)this.MaxHeight)), this._clickedButton, inScreen);
                        OnClick(args);
                    }
                }
                else if (!_clicked && state.LeftButton == ButtonState.Released && state.RightButton == ButtonState.Released)
                {
                    if (Viewport.Bounds.Contains(cursorPos.X, cursorPos.Y))
                    {
                        var args = new ViewportEventArgs(this, (int)((float)(cursorPos.X - this.Viewport.X) / ((float)this.Viewport.Width / (float)this.MaxWidth)), (int)(cursorPos.Y / ((float)this.Viewport.Height / (float)this.MaxHeight)), this._clickedButton, true);
                        OnMouseOver(args);
                    }
                }

                if (!cursorPos.Equals(_lastMousePosition) &&
                    Viewport.Bounds.Contains(cursorPos.X, cursorPos.Y) &&
                    state.LeftButton == ButtonState.Pressed)
                {
                    _lastMousePosition = new Vector2(cursorPos.X, cursorPos.Y);
                    var args = new ViewportEventArgs(this, (int)((float)(cursorPos.X - this.Viewport.X) / ((float)this.Viewport.Width / (float)this.MaxWidth)), (int)(cursorPos.Y / ((float)this.Viewport.Height / (float)this.MaxHeight)), this._clickedButton, true);
                    OnMouseDownMove(args);
                }
            }
        }