コード例 #1
0
        public override void RunCommand(object sender)
        {
            var engine = (AutomationEngineInstance)sender;
            var mouseX = v_XMousePosition.ConvertUserVariableToString(engine);
            var mouseY = v_YMousePosition.ConvertUserVariableToString(engine);

            try
            {
                var xLocation = Convert.ToInt32(Math.Floor(Convert.ToDouble(mouseX)));
                var yLocation = Convert.ToInt32(Math.Floor(Convert.ToDouble(mouseY)));

                User32Functions.SetCursorPosition(xLocation, yLocation);
                User32Functions.SendMouseClick(v_MouseClick, xLocation, yLocation);
            }
            catch (Exception ex)
            {
                throw new Exception("Error parsing input to int type (X: " + v_XMousePosition + ", Y:" + v_YMousePosition + ") " + ex.ToString());
            }
        }
コード例 #2
0
        public override void RunCommand(object sender)
        {
            var mousePosition = Cursor.Position;

            User32Functions.SendMouseClick(v_MouseClick, mousePosition.X, mousePosition.Y);
        }
コード例 #3
0
        public async override Task RunCommand(object sender)
        {
            var engine        = (IAutomationEngineInstance)sender;
            var browserObject = ((OBAppInstance)await v_InstanceName.EvaluateCode(engine)).Value;
            var chromeProcess = (Process)browserObject;
            var vTimeout      = (int)await v_Timeout.EvaluateCode(engine);

            var vXAdjustment = (int)await v_XAdjustment.EvaluateCode(engine);

            var vYAdjustment = (int)await v_YAdjustment.EvaluateCode(engine);

            User32Functions.GetWindowRect(chromeProcess.MainWindowHandle, out Rect chromeRect);

            WebElement webElement = await NativeHelper.DataTableToWebElement(v_NativeSearchParameters, engine);

            webElement.Value = v_OpenLinkOptions;

            User32Functions.BringWindowToFront(chromeProcess.MainWindowHandle);

            string responseText;

            if ((v_ClickButton == "Left" || v_ClickButton == "Middle") && v_ClickType == "Simulate Click")
            {
                string clickButton = v_ClickButton.ToLower() + "click";
                NativeRequest.ProcessRequest(clickButton, JsonConvert.SerializeObject(webElement), vTimeout, out responseText);
                NativeResponse responseObject = JsonConvert.DeserializeObject <NativeResponse>(responseText);

                if (responseObject.Status == "Failed")
                {
                    throw new Exception(responseObject.Result);
                }

                if (v_OpenLinkOptions == "New Window" && v_ClickButton == "Left")
                {
                    //Create new browser
                    int chromeProcessCount = Process.GetProcessesByName("chrome").Length;
                    var process            = Process.Start("chrome.exe", responseObject.Result + " --new-window");

                    if (chromeProcessCount > 0)
                    {
                        while (process.HasExited == false)
                        {
                            Thread.Sleep(100);
                            process.Refresh();
                        }
                    }
                    //Delay 7 seconds
                    Thread.Sleep(7000);

                    Process[] procsChrome = Process.GetProcessesByName("chrome");

                    foreach (Process chrome in procsChrome)
                    {
                        // the chrome process must have a window
                        if (chrome.MainWindowHandle == IntPtr.Zero)
                        {
                            continue;
                        }

                        process = chrome;
                        break;
                    }

                    new OBAppInstance(v_NewInstanceName, process).SetVariableValue(engine, v_NewInstanceName);
                }
            }
            else
            {
                NativeRequest.ProcessRequest("getcoordinates", JsonConvert.SerializeObject(webElement), vTimeout, out responseText);
                NativeResponse responseObject = JsonConvert.DeserializeObject <NativeResponse>(responseText);

                if (responseObject.Status == "Failed")
                {
                    throw new Exception(responseObject.Result);
                }

                var screenPosition = responseObject.Result.Split(',');

                /* Following are the values returned from extension
                 * screenPosition[0] = element.left, screenPosition[1] = element.top,
                 * screenPosition[2] = element.width, screenPosition[3] = element.height,
                 * screenPosition[4] = chrome toolbar height */
                int xPosition = chromeRect.left + Convert.ToInt32(Convert.ToDouble(screenPosition[0])) + (Convert.ToInt32(Convert.ToDouble(screenPosition[2])) / 2) + vXAdjustment;
                int yPosition = chromeRect.top + Convert.ToInt32(Convert.ToDouble(screenPosition[1])) + Convert.ToInt32(Convert.ToDouble(screenPosition[4])) + (Convert.ToInt32(Convert.ToDouble(screenPosition[3])) / 2) + vYAdjustment;

                User32Functions.SetCursorPosition(xPosition, yPosition);

                if (v_ClickButton == "Left")
                {
                    User32Functions.SendMouseClick("Left Click", xPosition, yPosition);
                }
                else if (v_ClickButton == "Right")
                {
                    User32Functions.SendMouseClick("Right Click", xPosition, yPosition);
                }
                else
                {
                    User32Functions.SendMouseClick("Middle Click", xPosition, yPosition);
                }
            }
        }