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()); } }
public override void RunCommand(object sender) { var mousePosition = Cursor.Position; User32Functions.SendMouseClick(v_MouseClick, mousePosition.X, mousePosition.Y); }
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); } } }