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(); }); }
public ViewportEventArgs(EViewport eventViewport, int x, int y, ClickedMouseButton clickedButton, bool clickedInScreen) { EventViewport = eventViewport; ClickedX = x; ClickedY = y; ClickedButton = clickedButton; ClickedInScreen = clickedInScreen; }
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); } } }