コード例 #1
0
        /// <summary>
        /// Look for a widget with the given name and click it. It and all its parents must be visible and enabled.
        /// </summary>
        /// <param name="widgetName"></param>
        /// <param name="xOffset"></param>
        /// <param name="yOffset"></param>
        /// <param name="origin"></param>
        /// <param name="secondsToWait">Total seconds to stay in this function waiting for the named widget to become visible.</param>
        /// <returns></returns>
        public bool ClickByName(string widgetName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, double secondsToWait = 0, SearchRegion searchRegion = null)
        {
            SystemWindow containingWindow;
            GuiWidget    widgetToClick = GetWidgetByName(widgetName, out containingWindow, secondsToWait, searchRegion);

            if (widgetToClick != null)
            {
                RectangleDouble childBounds = widgetToClick.TransformToParentSpace(containingWindow, widgetToClick.LocalBounds);

                if (origin == ClickOrigin.Center)
                {
                    xOffset += (int)childBounds.Width / 2;
                    yOffset += (int)childBounds.Height / 2;
                }

                Point2D screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + xOffset, childBounds.Bottom + yOffset), containingWindow);

                SetMouseCursorPosition(screenPosition.x, screenPosition.y);
                NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);

                Wait(upDelaySeconds);

                NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

                return(true);
            }

            return(false);
        }
コード例 #2
0
        public bool DragDropByName(string widgetNameDrag, string widgetNameDrop, int xOffsetDrag = 0, int yOffsetDrag = 0, ClickOrigin originDrag = ClickOrigin.Center,
                                   int xOffsetDrop = 0, int yOffsetDrop = 0, ClickOrigin originDrop = ClickOrigin.Center, double secondsToWait = 0, SearchRegion searchRegion = null)
        {
            if (DragByName(widgetNameDrag, xOffsetDrag, yOffsetDrag, originDrag, secondsToWait, searchRegion))
            {
                return(DropByName(widgetNameDrop, xOffsetDrop, yOffsetDrop, originDrop, secondsToWait, searchRegion));
            }

            return(false);
        }
コード例 #3
0
        public bool DropImage(string imageName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
        {
            ImageBuffer imageToLookFor = LoadImageFromSourcFolder(imageName);

            if (imageToLookFor != null)
            {
                return(DropImage(imageToLookFor, xOffset, yOffset, origin, searchRegion));
            }

            return(false);
        }
コード例 #4
0
        public bool ClickImage(string imageName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null, MouseButtons mouseButtons = MouseButtons.Left)
        {
            ImageBuffer imageToLookFor = LoadImageFromSourcFolder(imageName);

            if (imageToLookFor != null)
            {
                return(ClickImage(imageToLookFor, xOffset, yOffset, origin, searchRegion, mouseButtons));
            }

            return(false);
        }
コード例 #5
0
        public bool DragDropImage(ImageBuffer imageNeedleDrag, ImageBuffer imageNeedleDrop, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offsetDrag = default(Point2D), ClickOrigin originDrag = ClickOrigin.Center,
                                  Point2D offsetDrop = default(Point2D), ClickOrigin originDrop = ClickOrigin.Center)
        {
            if (searchRegion == null)
            {
                searchRegion = GetScreenRegion();
            }

            if (DragImage(imageNeedleDrag, secondsToWait, searchRegion, offsetDrag, originDrag))
            {
                return(DropImage(imageNeedleDrop, secondsToWait, searchRegion, offsetDrop, originDrop));
            }

            return(false);
        }
コード例 #6
0
        public bool DragDropImage(string imageNameDrag, string imageNameDrop, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offsetDrag = default(Point2D), ClickOrigin originDrag = ClickOrigin.Center,
                                  Point2D offsetDrop = default(Point2D), ClickOrigin originDrop = ClickOrigin.Center)
        {
            ImageBuffer imageNeedleDrag = LoadImageFromSourceFolder(imageNameDrag);

            if (imageNeedleDrag != null)
            {
                ImageBuffer imageNeedleDrop = LoadImageFromSourceFolder(imageNameDrop);
                if (imageNeedleDrop != null)
                {
                    return(DragDropImage(imageNeedleDrag, imageNeedleDrop, secondsToWait, searchRegion, offsetDrag, originDrag, offsetDrop, originDrop));
                }
            }

            return(false);
        }
コード例 #7
0
        private void ClickWidget(GuiWidget widget, SystemWindow containingWindow, ClickOrigin origin, Point2D offset, Point2D offsetHint, bool isDoubleClick = false)
        {
            MoveMouseToWidget(widget, containingWindow, offset, offsetHint, origin, out Point2D screenPosition);
            inputSystem.CreateMouseEvent(MouseConsts.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);
            WaitforDraw(containingWindow);

            if (isDoubleClick)
            {
                Thread.Sleep(150);
                inputSystem.CreateMouseEvent(MouseConsts.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);
                WaitforDraw(containingWindow);
            }

            Delay(UpDelaySeconds);

            inputSystem.CreateMouseEvent(MouseConsts.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

            WaitforDraw(containingWindow);

            Delay(0.2);
        }
コード例 #8
0
		public bool DropImage(ImageBuffer imageNeedle, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
		{
			if (origin == ClickOrigin.Center)
			{
				xOffset += imageNeedle.Width / 2;
				yOffset += imageNeedle.Height / 2;
			}

			if (searchRegion == null)
			{
				searchRegion = GetScreenRegion();
			}

			Vector2 matchPosition;
			double bestMatch;
			if (searchRegion.Image.FindLeastSquaresMatch(imageNeedle, out matchPosition, out bestMatch, MatchLimit))
			{
				int screenHeight = NativeMethods.GetCurrentScreenHeight();
				int clickY = (int)(searchRegion.ScreenRect.Bottom + matchPosition.y + yOffset);
				int clickYOnScreen = screenHeight - clickY; // invert to put it on the screen

				Point2D screenPosition = new Point2D((int)matchPosition.x + xOffset, clickYOnScreen);
				SetMouseCursorPosition(screenPosition.x, screenPosition.y);
				NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

				return true;
			}

			return false;
		}
コード例 #9
0
        public bool ClickImage(ImageBuffer imageNeedle, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null, MouseButtons mouseButtons = MouseButtons.Left)
        {
            if (origin == ClickOrigin.Center)
            {
                xOffset += imageNeedle.Width / 2;
                yOffset += imageNeedle.Height / 2;
            }

            if (searchRegion == null)
            {
                searchRegion = GetScreenRegion();
            }

            Vector2 matchPosition;
            double  bestMatch;

            if (searchRegion.Image.FindLeastSquaresMatch(imageNeedle, out matchPosition, out bestMatch, MatchLimit))
            {
                int screenHeight   = NativeMethods.GetCurrentScreenHeight();
                int clickY         = (int)(searchRegion.ScreenRect.Bottom + matchPosition.y + yOffset);
                int clickYOnScreen = screenHeight - clickY;                 // invert to put it on the screen

                Point2D screenPosition = new Point2D((int)matchPosition.x + xOffset, clickYOnScreen);
                SetMouseCursorPosition(screenPosition.x, screenPosition.y);
                switch (mouseButtons)
                {
                case MouseButtons.None:
                    break;

                case MouseButtons.Left:
                    NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);
                    Wait(upDelaySeconds);
                    NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);
                    break;

                case MouseButtons.Right:
                    NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_RIGHTDOWN, screenPosition.x, screenPosition.y, 0, 0);
                    Wait(upDelaySeconds);
                    NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_RIGHTUP, screenPosition.x, screenPosition.y, 0, 0);
                    break;

                case MouseButtons.Middle:
                    NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_MIDDLEDOWN, screenPosition.x, screenPosition.y, 0, 0);
                    Wait(upDelaySeconds);
                    NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_MIDDLEUP, screenPosition.x, screenPosition.y, 0, 0);
                    break;

                default:
                    break;
                }

                return(true);
            }

            return(false);
        }
コード例 #10
0
		public bool DropImage(string imageName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
		{
			ImageBuffer imageToLookFor = LoadImageFromSourcFolder(imageName);
			if (imageToLookFor != null)
			{
				return DropImage(imageToLookFor, xOffset, yOffset, origin, searchRegion);
			}

			return false;
		}
コード例 #11
0
        public bool DropImage(ImageBuffer imageNeedle, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
        {
            if (origin == ClickOrigin.Center)
            {
                xOffset += imageNeedle.Width / 2;
                yOffset += imageNeedle.Height / 2;
            }

            if (searchRegion == null)
            {
                searchRegion = GetScreenRegion();
            }

            Vector2 matchPosition;
            double  bestMatch;

            if (searchRegion.Image.FindLeastSquaresMatch(imageNeedle, out matchPosition, out bestMatch, MatchLimit))
            {
                int screenHeight   = NativeMethods.GetCurrentScreenHeight();
                int clickY         = (int)(searchRegion.ScreenRect.Bottom + matchPosition.y + yOffset);
                int clickYOnScreen = screenHeight - clickY;                 // invert to put it on the screen

                Point2D screenPosition = new Point2D((int)matchPosition.x + xOffset, clickYOnScreen);
                SetMouseCursorPosition(screenPosition.x, screenPosition.y);
                NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

                return(true);
            }

            return(false);
        }
コード例 #12
0
 public bool DoubleClickByName(string widgetName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
 {
     throw new NotImplementedException();
 }
コード例 #13
0
		public bool DoubleClickByName(string widgetName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
		{
			throw new NotImplementedException();
		}
コード例 #14
0
        /// <summary>
        /// Look for a widget with the given name and click it. It and all its parents must be visible and enabled.
        /// </summary>
        /// <param name="widgetName">The given widget name</param>
        /// <param name="secondsToWait">Total seconds to stay in this function waiting for the named widget to become visible.</param>
        public void ClickByName(string widgetName, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center, bool isDoubleClick = false)
        {
            double secondsToWait = 5;

            GuiWidget widgetToClick = GetWidgetByName(widgetName, out SystemWindow containingWindow, out Point2D offsetHint, secondsToWait, searchRegion);

            if (widgetToClick != null)
            {
                this.ClickWidget(widgetToClick, containingWindow, origin, offset, offsetHint, isDoubleClick);

                return;
            }

            throw new Exception($"ClickByName Failed: Named GuiWidget not found [{widgetName}]");
        }
コード例 #15
0
        /// <summary>
        /// Look for a widget with the given name and click it. It and all its parents must be visible and enabled.
        /// </summary>
        /// <param name="widgetName">The given widget name</param>
        /// <param name="secondsToWait">Total seconds to stay in this function waiting for the named widget to become visible.</param>
        public void ClickByName(string widgetName, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center, bool isDoubleClick = false)
        {
            double secondsToWait = 5;

            GuiWidget widgetToClick = GetWidgetByName(widgetName, out SystemWindow containingWindow, out Point2D offsetHint, secondsToWait, searchRegion);

            if (widgetToClick != null)
            {
                MoveMouseToWidget(widgetToClick, containingWindow, offset, offsetHint, origin, out Point2D screenPosition);
                inputSystem.CreateMouseEvent(NativeMethods.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);
                WaitforDraw(containingWindow);

                if (isDoubleClick)
                {
                    Thread.Sleep(150);
                    inputSystem.CreateMouseEvent(NativeMethods.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);
                    WaitforDraw(containingWindow);
                }

                Delay(UpDelaySeconds);

                inputSystem.CreateMouseEvent(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

                WaitforDraw(containingWindow);

                Delay(0.2);

                return;
            }

            throw new Exception($"ClickByName Failed: Named GuiWidget not found [{widgetName}]");
        }
コード例 #16
0
 public void DoubleClickByName(string widgetName, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
 {
     this.ClickByName(widgetName, searchRegion, offset, origin, isDoubleClick: true);
 }
コード例 #17
0
ファイル: AutomationRunner.cs プロジェクト: eriser/agg-sharp
		public bool DragDropImage(string imageNameDrag, string imageNameDrop, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offsetDrag = default(Point2D), ClickOrigin originDrag = ClickOrigin.Center,
			Point2D offsetDrop = default(Point2D), ClickOrigin originDrop = ClickOrigin.Center)
		{
			ImageBuffer imageNeedleDrag = LoadImageFromSourcFolder(imageNameDrag);
			if (imageNeedleDrag != null)
			{
				ImageBuffer imageNeedleDrop = LoadImageFromSourcFolder(imageNameDrop);
				if (imageNeedleDrop != null)
				{
					return DragDropImage(imageNeedleDrag, imageNeedleDrop, secondsToWait, searchRegion, offsetDrag, originDrag, offsetDrop, originDrop);
				}
			}

			return false;
		}
コード例 #18
0
ファイル: AutomationRunner.cs プロジェクト: eriser/agg-sharp
		public bool DropImage(string imageName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
		{
			ImageBuffer imageToLookFor = LoadImageFromSourcFolder(imageName);
			if (imageToLookFor != null)
			{
				return DropImage(imageToLookFor, secondsToWait, searchRegion, offset, origin);
			}

			return false;
		}
コード例 #19
0
ファイル: AutomationRunner.cs プロジェクト: eriser/agg-sharp
		public bool DragDropImage(ImageBuffer imageNeedleDrag, ImageBuffer imageNeedleDrop, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offsetDrag = default(Point2D), ClickOrigin originDrag = ClickOrigin.Center,
			Point2D offsetDrop = default(Point2D), ClickOrigin originDrop = ClickOrigin.Center)
		{
			if (searchRegion == null)
			{
				searchRegion = GetScreenRegion();
			}

			if (DragImage(imageNeedleDrag, secondsToWait, searchRegion, offsetDrag, originDrag))
			{
				return DropImage(imageNeedleDrop, secondsToWait, searchRegion, offsetDrop, originDrop);
			}

			return false;
		}
コード例 #20
0
 public bool DoubleClickByName(string widgetName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
 {
     throw new NotImplementedException();
 }
コード例 #21
0
        public bool DragDropImage(string imageNameDrag, string imageNameDrop, int xOffsetDrag = 0, int yOffsetDrag = 0, ClickOrigin originDrag = ClickOrigin.Center,
                                  int xOffsetDrop           = 0, int yOffsetDrop = 0, ClickOrigin originDrop = ClickOrigin.Center,
                                  SearchRegion searchRegion = null)
        {
            ImageBuffer imageNeedleDrag = LoadImageFromSourcFolder(imageNameDrag);

            if (imageNeedleDrag != null)
            {
                ImageBuffer imageNeedleDrop = LoadImageFromSourcFolder(imageNameDrop);
                if (imageNeedleDrop != null)
                {
                    return(DragDropImage(imageNeedleDrag, imageNeedleDrop, xOffsetDrag, yOffsetDrag, originDrag, xOffsetDrop, yOffsetDrop, originDrop, searchRegion));
                }
            }

            return(false);
        }
コード例 #22
0
		public bool MoveToImage(string imageName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
		{
			throw new NotImplementedException();
		}
コード例 #23
0
        public bool DragDropImage(ImageBuffer imageNeedleDrag, ImageBuffer imageNeedleDrop, int xOffsetDrag = 0, int yOffsetDrag = 0, ClickOrigin originDrag = ClickOrigin.Center,
                                  int xOffsetDrop           = 0, int yOffsetDrop = 0, ClickOrigin originDrop = ClickOrigin.Center,
                                  SearchRegion searchRegion = null)
        {
            if (searchRegion == null)
            {
                searchRegion = GetScreenRegion();
            }

            if (DragImage(imageNeedleDrag, xOffsetDrag, yOffsetDrag, originDrag, searchRegion))
            {
                return(DropImage(imageNeedleDrop, xOffsetDrop, yOffsetDrop, originDrop, searchRegion));
            }

            return(false);
        }
コード例 #24
0
		public bool DragDropByName(string widgetNameDrag, string widgetNameDrop, int xOffsetDrag = 0, int yOffsetDrag = 0, ClickOrigin originDrag = ClickOrigin.Center,
			int xOffsetDrop = 0, int yOffsetDrop = 0, ClickOrigin originDrop = ClickOrigin.Center, double secondsToWait = 0, SearchRegion searchRegion = null)
		{
			if (DragByName(widgetNameDrag, xOffsetDrag, yOffsetDrag, originDrag, secondsToWait, searchRegion))
			{
				return DropByName(widgetNameDrop, xOffsetDrop, yOffsetDrop, originDrop, secondsToWait, searchRegion);
			}

			return false;
		}
コード例 #25
0
        public bool DropImage(string imageName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
        {
            ImageBuffer imageToLookFor = LoadImageFromSourceFolder(imageName);

            if (imageToLookFor != null)
            {
                return(DropImage(imageToLookFor, secondsToWait, searchRegion, offset, origin));
            }

            return(false);
        }
コード例 #26
0
		public bool MoveToByName(string widgetName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, double secondsToWait = 0, SearchRegion searchRegion = null)
		{
			SystemWindow containingWindow;
			GuiWidget widgetToClick = GetWidgetByName(widgetName, out containingWindow, secondsToWait, searchRegion);
			if (widgetToClick != null)
			{
				RectangleDouble childBounds = widgetToClick.TransformToParentSpace(containingWindow, widgetToClick.LocalBounds);

				if (origin == ClickOrigin.Center)
				{
					xOffset += (int)childBounds.Width / 2;
					yOffset += (int)childBounds.Height / 2;
				}

				Point2D screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + xOffset, childBounds.Bottom + yOffset), containingWindow);
				SetMouseCursorPosition(screenPosition.x, screenPosition.y);

				return true;
			}

			return false;
		}
コード例 #27
0
        /// <summary>
        /// Look for a widget with the given name and click it. It and all its parents must be visible and enabled.
        /// </summary>
        /// <param name="widgetName">The given widget name</param>
        /// <param name="secondsToWait">Total seconds to stay in this function waiting for the named widget to become visible.</param>
        public void ClickByName(string widgetName, double secondsToWait = 5, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center, double delayBeforeReturn = 0.2)
        {
            SystemWindow containingWindow;
            GuiWidget    widgetToClick = GetWidgetByName(widgetName, out containingWindow, secondsToWait, searchRegion);

            if (widgetToClick != null)
            {
                RectangleDouble childBounds = widgetToClick.TransformToParentSpace(containingWindow, widgetToClick.LocalBounds);

                if (origin == ClickOrigin.Center)
                {
                    offset.x += (int)childBounds.Width / 2;
                    offset.y += (int)childBounds.Height / 2;
                }

                Point2D screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + offset.x, childBounds.Bottom + offset.y), containingWindow);

                SetMouseCursorPosition(screenPosition.x, screenPosition.y);
                inputSystem.CreateMouseEvent(NativeMethods.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);

                Wait(UpDelaySeconds);

                inputSystem.CreateMouseEvent(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

                // After firing the click event, wait the given period of time before returning to allow MatterControl
                // to complete the targeted action
                Wait(delayBeforeReturn);

                return;
            }

            throw new Exception($"ClickByName Failed: Named GuiWidget not found [{widgetName}]");
        }
コード例 #28
0
ファイル: AutomationRunner.cs プロジェクト: eriser/agg-sharp
		public bool DragDropByName(string widgetNameDrag, string widgetNameDrop, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offsetDrag = default(Point2D), ClickOrigin originDrag = ClickOrigin.Center, Point2D offsetDrop = default(Point2D), ClickOrigin originDrop = ClickOrigin.Center)
		{
			if (DragByName(widgetNameDrag, secondsToWait, searchRegion, offsetDrag, originDrag))
			{
				return DropByName(widgetNameDrop, secondsToWait, searchRegion, offsetDrop, originDrop);
			}

			return false;
		}
コード例 #29
0
 public bool MoveToImage(string imageName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null)
 {
     throw new NotImplementedException();
 }
コード例 #30
0
        public bool DragByName(string widgetName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center, MouseButtons mouseButtons = MouseButtons.Left)
        {
            SystemWindow containingWindow;
            Point2D      offsetHint;
            GuiWidget    widgetToClick = GetWidgetByName(widgetName, out containingWindow, out offsetHint, secondsToWait, searchRegion);

            if (widgetToClick != null)
            {
                RectangleDouble childBounds = widgetToClick.TransformToParentSpace(containingWindow, widgetToClick.LocalBounds);

                if (origin == ClickOrigin.Center)
                {
                    offset += offsetHint;
                }

                Point2D screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + offset.x, childBounds.Bottom + offset.y), containingWindow);
                SetMouseCursorPosition(screenPosition.x, screenPosition.y);
                inputSystem.CreateMouseEvent(GetMouseDown(mouseButtons), screenPosition.x, screenPosition.y, 0, 0);

                return(true);
            }

            return(false);
        }
コード例 #31
0
ファイル: AutomationRunner.cs プロジェクト: eriser/agg-sharp
		public bool DropByName(string widgetName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
		{
			SystemWindow containingWindow;
			GuiWidget widgetToClick = GetWidgetByName(widgetName, out containingWindow, secondsToWait, searchRegion);
			if (widgetToClick != null)
			{
				RectangleDouble childBounds = widgetToClick.TransformToParentSpace(containingWindow, widgetToClick.LocalBounds);

				if (origin == ClickOrigin.Center)
				{
					offset.x += (int)childBounds.Width / 2;
					offset.y += (int)childBounds.Height / 2;
				}

				Point2D screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + offset.x, childBounds.Bottom + offset.y), containingWindow);
				SetMouseCursorPosition(screenPosition.x, screenPosition.y);
				NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

				return true;
			}

			return false;
		}
コード例 #32
0
        public void MoveMouseToWidget(GuiWidget widget, SystemWindow containingWindow, Point2D offset, Point2D offsetHint, ClickOrigin origin, out Point2D screenPosition)
        {
            RectangleDouble childBounds = widget.TransformToParentSpace(containingWindow, widget.LocalBounds);

            screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + offset.x, childBounds.Bottom + offset.y), containingWindow);

            int     steps = (int)((TimeToMoveMouse * 1000) / 20);
            Vector2 start = new Vector2(CurrentMousePosition().x, CurrentMousePosition().y);

            if (origin == ClickOrigin.Center)
            {
                offset += offsetHint;
            }

            for (int i = 0; i < steps; i++)
            {
                childBounds = widget.TransformToParentSpace(containingWindow, widget.LocalBounds);

                screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + offset.x, childBounds.Bottom + offset.y), containingWindow);

                Vector2 end   = new Vector2(screenPosition.x, screenPosition.y);
                Vector2 delta = end - start;

                double ratio = i / (double)steps;
                ratio = Cubic.Out(ratio);
                Vector2 current = start + delta * ratio;
                inputSystem.SetCursorPosition((int)current.X, (int)current.Y);
                Thread.Sleep(20);
            }

            inputSystem.SetCursorPosition(screenPosition.x, screenPosition.y);
        }
コード例 #33
0
ファイル: AutomationRunner.cs プロジェクト: eriser/agg-sharp
		public bool DoubleClickByName(string widgetName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
		{
			throw new NotImplementedException();
		}
コード例 #34
0
		public bool ClickImage(string imageName, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null, MouseButtons mouseButtons = MouseButtons.Left)
		{
			ImageBuffer imageToLookFor = LoadImageFromSourcFolder(imageName);
			if (imageToLookFor != null)
			{
				return ClickImage(imageToLookFor, xOffset, yOffset, origin, searchRegion, mouseButtons);
			}

			return false;
		}
コード例 #35
0
		public bool ClickImage(ImageBuffer imageNeedle, int xOffset = 0, int yOffset = 0, ClickOrigin origin = ClickOrigin.Center, SearchRegion searchRegion = null, MouseButtons mouseButtons = MouseButtons.Left)
		{
			if (origin == ClickOrigin.Center)
			{
				xOffset += imageNeedle.Width / 2;
				yOffset += imageNeedle.Height / 2;
			}

			if (searchRegion == null)
			{
				searchRegion = GetScreenRegion();
			}

			Vector2 matchPosition;
			double bestMatch;
			if (searchRegion.Image.FindLeastSquaresMatch(imageNeedle, out matchPosition, out bestMatch, MatchLimit))
			{
				int screenHeight = NativeMethods.GetCurrentScreenHeight();
				int clickY = (int)(searchRegion.ScreenRect.Bottom + matchPosition.y + yOffset);
				int clickYOnScreen = screenHeight - clickY; // invert to put it on the screen

				Point2D screenPosition = new Point2D((int)matchPosition.x + xOffset, clickYOnScreen);
				SetMouseCursorPosition(screenPosition.x, screenPosition.y);
				switch (mouseButtons)
				{
					case MouseButtons.None:
						break;

					case MouseButtons.Left:
						NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTDOWN, screenPosition.x, screenPosition.y, 0, 0);
						Wait(upDelaySeconds);
						NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);
						break;

					case MouseButtons.Right:
						NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_RIGHTDOWN, screenPosition.x, screenPosition.y, 0, 0);
						Wait(upDelaySeconds);
						NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_RIGHTUP, screenPosition.x, screenPosition.y, 0, 0);
						break;

					case MouseButtons.Middle:
						NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_MIDDLEDOWN, screenPosition.x, screenPosition.y, 0, 0);
						Wait(upDelaySeconds);
						NativeMethods.mouse_event(NativeMethods.MOUSEEVENTF_MIDDLEUP, screenPosition.x, screenPosition.y, 0, 0);
						break;

					default:
						break;
				}

				return true;
			}

			return false;
		}
コード例 #36
0
        public bool DropImage(ImageBuffer imageNeedle, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
        {
            if (origin == ClickOrigin.Center)
            {
                offset.x += imageNeedle.Width / 2;
                offset.y += imageNeedle.Height / 2;
            }

            if (searchRegion == null)
            {
                searchRegion = GetScreenRegion();
            }

            Vector2 matchPosition;
            double  bestMatch;

            if (searchRegion.Image.FindLeastSquaresMatch(imageNeedle, out matchPosition, out bestMatch, MatchLimit))
            {
                int screenHeight   = inputSystem.GetCurrentScreenHeight();
                int clickY         = (int)(searchRegion.ScreenRect.Bottom + matchPosition.y + offset.y);
                int clickYOnScreen = screenHeight - clickY;                 // invert to put it on the screen

                Point2D screenPosition = new Point2D((int)matchPosition.x + offset.x, clickYOnScreen);
                SetMouseCursorPosition(screenPosition.x, screenPosition.y);
                inputSystem.CreateMouseEvent(NativeMethods.MOUSEEVENTF_LEFTUP, screenPosition.x, screenPosition.y, 0, 0);

                return(true);
            }

            return(false);
        }
コード例 #37
0
		public bool DragDropImage(ImageBuffer imageNeedleDrag, ImageBuffer imageNeedleDrop, int xOffsetDrag = 0, int yOffsetDrag = 0, ClickOrigin originDrag = ClickOrigin.Center,
			int xOffsetDrop = 0, int yOffsetDrop = 0, ClickOrigin originDrop = ClickOrigin.Center,
			SearchRegion searchRegion = null)
		{
			if (searchRegion == null)
			{
				searchRegion = GetScreenRegion();
			}

			if (DragImage(imageNeedleDrag, xOffsetDrag, yOffsetDrag, originDrag, searchRegion))
			{
				return DropImage(imageNeedleDrop, xOffsetDrop, yOffsetDrop, originDrop, searchRegion);
			}

			return false;
		}
コード例 #38
0
        public bool DragDropByName(string widgetNameDrag, string widgetNameDrop, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offsetDrag = default(Point2D), ClickOrigin originDrag = ClickOrigin.Center, Point2D offsetDrop = default(Point2D), ClickOrigin originDrop = ClickOrigin.Center)
        {
            if (DragByName(widgetNameDrag, secondsToWait, searchRegion, offsetDrag, originDrag))
            {
                return(DropByName(widgetNameDrop, secondsToWait, searchRegion, offsetDrop, originDrop));
            }

            return(false);
        }
コード例 #39
0
		public bool DragDropImage(string imageNameDrag, string imageNameDrop, int xOffsetDrag = 0, int yOffsetDrag = 0, ClickOrigin originDrag = ClickOrigin.Center,
			int xOffsetDrop = 0, int yOffsetDrop = 0, ClickOrigin originDrop = ClickOrigin.Center,
			SearchRegion searchRegion = null)
		{
			ImageBuffer imageNeedleDrag = LoadImageFromSourcFolder(imageNameDrag);
			if (imageNeedleDrag != null)
			{
				ImageBuffer imageNeedleDrop = LoadImageFromSourcFolder(imageNameDrop);
				if (imageNeedleDrop != null)
				{
					return DragDropImage(imageNeedleDrag, imageNeedleDrop, xOffsetDrag, yOffsetDrag, originDrag, xOffsetDrop, yOffsetDrop, originDrop, searchRegion);
				}
			}

			return false;
		}
コード例 #40
0
        public bool MoveToByName(string widgetName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center)
        {
            SystemWindow containingWindow;
            GuiWidget    widgetToClick = GetWidgetByName(widgetName, out containingWindow, secondsToWait, searchRegion);

            if (widgetToClick != null)
            {
                RectangleDouble childBounds = widgetToClick.TransformToParentSpace(containingWindow, widgetToClick.LocalBounds);

                if (origin == ClickOrigin.Center)
                {
                    offset.x += (int)childBounds.Width / 2;
                    offset.y += (int)childBounds.Height / 2;
                }

                Point2D screenPosition = SystemWindowToScreen(new Point2D(childBounds.Left + offset.x, childBounds.Bottom + offset.y), containingWindow);
                SetMouseCursorPosition(screenPosition.x, screenPosition.y);

                return(true);
            }

            return(false);
        }
コード例 #41
0
ファイル: AutomationRunner.cs プロジェクト: huhen/agg-sharp
        public bool ClickImage(string imageName, double secondsToWait = 0, SearchRegion searchRegion = null, Point2D offset = default(Point2D), ClickOrigin origin = ClickOrigin.Center, MouseButtons mouseButtons = MouseButtons.Left)
        {
            ImageBuffer imageToLookFor = LoadImageFromSourcFolder(imageName);

            if (imageToLookFor != null)
            {
                return(ClickImage(imageToLookFor, secondsToWait, searchRegion, offset, origin, mouseButtons));
            }

            return(false);
        }