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 vScript = (string)await v_FilePath.EvaluateCode(engine); var vTimeout = (int)await v_Timeout.EvaluateCode(engine); if (v_ScriptSource == "File Path") { vScript = File.ReadAllText(vScript); } else { vScript = v_InputJS; } WebElement webElement = new WebElement(); webElement.Value = vScript; User32Functions.BringWindowToFront(chromeProcess.MainWindowHandle); string responseText; NativeRequest.ProcessRequest("injectjsscript", JsonConvert.SerializeObject(webElement), vTimeout, out responseText); NativeResponse responseObject = JsonConvert.DeserializeObject <NativeResponse>(responseText); if (responseObject.Status == "Failed") { throw new Exception(responseObject.Result); } }
public override void RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); int timeout = Int32.Parse(v_Timeout); DateTime timeToEnd = DateTime.Now.AddSeconds(timeout); while (timeToEnd >= DateTime.Now) { try { if (engine.IsCancellationPending) { break; } List <IntPtr> targetWindows = User32Functions.FindTargetWindows(windowName); if (targetWindows.Count == 0) { throw new Exception($"Window '{windowName}' Not Yet Found... "); } break; } catch (Exception) { engine.ReportProgress($"Window '{windowName}' Not Yet Found... " + (timeToEnd - DateTime.Now).Minutes + "m, " + (timeToEnd - DateTime.Now).Seconds + "s remain"); Thread.Sleep(500); } } var variableXPosition = v_XMousePosition.ConvertUserVariableToString(engine); var variableYPosition = v_YMousePosition.ConvertUserVariableToString(engine); User32Functions.MoveWindow(windowName, variableXPosition, variableYPosition); }
public override void RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); var timeout = int.Parse(v_Timeout.ConvertUserVariableToString(engine)); var endDateTime = DateTime.Now.AddSeconds(timeout); IntPtr hWnd = IntPtr.Zero; while (DateTime.Now < endDateTime) { if (engine.IsCancellationPending) { break; } hWnd = User32Functions.FindWindow(windowName); if (hWnd != IntPtr.Zero) //If found { break; } engine.ReportProgress($"Window '{windowName}' Not Yet Found... " + (endDateTime - DateTime.Now).Minutes + "m, " + (endDateTime - DateTime.Now).Seconds + "s remain"); Thread.Sleep(1000); } if (hWnd == IntPtr.Zero) { throw new Exception($"Window '{windowName}' was not found in the allowed time!"); } }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; var action = (string)v_ActionName.ConvertUserVariableToString(engine); switch (action) { case "Shutdown": System.Diagnostics.Process.Start("shutdown", "/s /t 0"); break; case "Restart": System.Diagnostics.Process.Start("shutdown", "/r /t 0"); break; case "Logoff": User32Functions.WindowsLogOff(); break; case "Lock Screen": User32Functions.LockWorkStation(); break; default: break; } }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; var input = v_TextToSet.ConvertUserVariableToString(engine); User32Functions.SetClipboardText(input); }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); var timeout = int.Parse(v_Timeout.ConvertUserVariableToString(engine)); var endDateTime = DateTime.Now.AddSeconds(timeout); IntPtr hWnd = IntPtr.Zero; while (DateTime.Now < endDateTime) { hWnd = User32Functions.FindWindow(windowName); if (hWnd != IntPtr.Zero) //If found { break; } Thread.Sleep(1000); } if (hWnd == IntPtr.Zero) { throw new Exception("Window was not found in the allowed time!"); } }
public async override Task RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; string windowName = (string)await v_WindowName.EvaluateCode(engine); var timeout = (int)await v_Timeout.EvaluateCode(engine); var timeToEnd = DateTime.Now.AddSeconds(timeout); IntPtr hWnd = IntPtr.Zero; while (DateTime.Now < timeToEnd) { if (engine.IsCancellationPending) { break; } hWnd = User32Functions.FindWindow(windowName); if (hWnd != IntPtr.Zero) //If found { break; } engine.ReportProgress($"Window '{windowName}' Not Yet Found... {(timeToEnd - DateTime.Now).Minutes}m, {(timeToEnd - DateTime.Now).Seconds}s remain"); Thread.Sleep(1000); } if (hWnd == IntPtr.Zero) { throw new Exception($"Window '{windowName}' was not found in the allowed time!"); } }
public override void RunCommand(object sender) { //convert window name string windowName = v_WindowName.ConvertToUserVariable(sender); var targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window and set the window state foreach (var targetedWindow in targetWindows) { User32Functions.WindowState WINDOW_STATE = User32Functions.WindowState.SW_SHOWNORMAL; switch (v_WindowState) { case "Maximize": WINDOW_STATE = User32Functions.WindowState.SW_MAXIMIZE; break; case "Minimize": WINDOW_STATE = User32Functions.WindowState.SW_MINIMIZE; break; case "Restore": WINDOW_STATE = User32Functions.WindowState.SW_RESTORE; break; default: break; } User32Functions.SetWindowState(targetedWindow, WINDOW_STATE); } }
public async override Tasks.Task RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; var input = (string)await v_TextToSet.EvaluateCode(engine); User32Functions.SetClipboardText(input); }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); var variableXSize = v_XWindowSize.ConvertUserVariableToString(engine); var variableYSize = v_YWindowSize.ConvertUserVariableToString(engine); var targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window and set the window state foreach (var targetedWindow in targetWindows) { User32Functions.SetWindowState(targetedWindow, WindowState.SwShowNormal); if (!int.TryParse(variableXSize, out int xPos)) { throw new Exception("Width Invalid - " + v_XWindowSize); } if (!int.TryParse(variableYSize, out int yPos)) { throw new Exception("Height Invalid - " + v_YWindowSize); } User32Functions.SetWindowSize(targetedWindow, xPos, yPos); } }
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 vTargetText = (string)await v_Attribute.EvaluateCode(engine); var vTimeout = (int)await v_Timeout.EvaluateCode(engine); WebElement webElement = await NativeHelper.DataTableToWebElement(v_NativeSearchParameters, engine); webElement.SelectionRules = vTargetText; User32Functions.BringWindowToFront(chromeProcess.MainWindowHandle); string responseText; NativeRequest.ProcessRequest("getattribute", JsonConvert.SerializeObject(webElement), vTimeout, out responseText); NativeResponse responseObject = JsonConvert.DeserializeObject <NativeResponse>(responseText); if (responseObject.Status == "Failed") { throw new Exception(responseObject.Result); } responseObject.Result.SetVariableValue(engine, v_OutputUserVariableName); }
public override void RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); int timeout = Int32.Parse(v_Timeout); DateTime timeToEnd = DateTime.Now.AddSeconds(timeout); while (timeToEnd >= DateTime.Now) { try { if (engine.IsCancellationPending) { break; } User32Functions.ActivateWindow(windowName); if (!User32Functions.GetActiveWindowTitle().Equals(windowName)) { throw new Exception($"Window '{windowName}' Not Yet Found... "); } break; } catch (Exception) { engine.ReportProgress($"Window '{windowName}' Not Yet Found... " + (timeToEnd - DateTime.Now).Minutes + "m, " + (timeToEnd - DateTime.Now).Seconds + "s remain"); Thread.Sleep(500); } } if (!User32Functions.GetActiveWindowTitle().Equals(windowName)) { throw new Exception($"Window '{windowName}' Not Found"); } }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; //convert window name string windowName = v_WindowName.ConvertUserVariableToString(engine); var targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window and set the window state foreach (var targetedWindow in targetWindows) { WindowState WINDOW_STATE = WindowState.SwShowNormal; switch (v_WindowState) { case "Maximize": WINDOW_STATE = WindowState.SwMaximize; break; case "Minimize": WINDOW_STATE = WindowState.SwMinimize; break; case "Restore": WINDOW_STATE = WindowState.SwRestore; break; default: break; } User32Functions.SetWindowState(targetedWindow, WINDOW_STATE); } }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); User32Functions.ActivateWindow(windowName); }
public override void RunCommand(object sender) { var lengthToWait = v_LengthToWait.ConvertToUserVariable(sender); var waitUntil = int.Parse(lengthToWait); var endDateTime = DateTime.Now.AddSeconds(waitUntil); IntPtr hWnd = IntPtr.Zero; while (DateTime.Now < endDateTime) { string windowName = v_WindowName.ConvertToUserVariable(sender); hWnd = User32Functions.FindWindow(windowName); if (hWnd != IntPtr.Zero) //If found { break; } System.Threading.Thread.Sleep(1000); } if (hWnd == IntPtr.Zero) { throw new Exception("Window was not found in the allowed time!"); } }
private void pbRecord_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; this.searchParameters = new DataTable(); this.searchParameters.Columns.Add("Enabled"); this.searchParameters.Columns.Add("Parameter Name"); this.searchParameters.Columns.Add("Parameter Value"); this.searchParameters.TableName = DateTime.Now.ToString("UIASearchParamTable" + DateTime.Now.ToString("MMddyy.hhmmss")); //clear all searchParameters.Rows.Clear(); //get window name and find window string windowName = cboWindowTitle.Text; IntPtr hWnd = User32Functions.FindWindow(windowName); //check if window is found if (hWnd != IntPtr.Zero) { //set window state and move to 0,0 User32Functions.SetWindowState(hWnd, User32Functions.WindowState.SW_SHOWNORMAL); User32Functions.SetForegroundWindow(hWnd); User32Functions.SetWindowPosition(hWnd, 0, 0); //start global hook and wait for left mouse down event User32Functions.GlobalHook.StartElementCaptureHook(); User32Functions.GlobalHook.MouseEvent += GlobalHook_MouseEvent; } }
public override void RunCommand(object sender) { var image = User32Functions.CaptureWindow(v_ScreenshotWindowName); string ConvertToUserVariabledString = v_FilePath.ConvertToUserVariable(sender); image.Save(ConvertToUserVariabledString); }
public override void RunCommand(object sender) { string windowName = v_WindowName.ConvertToUserVariable(sender); var targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window foreach (var targetedWindow in targetWindows) { var variableXPosition = v_XWindowPosition.ConvertToUserVariable(sender); var variableYPosition = v_YWindowPosition.ConvertToUserVariable(sender); if (!int.TryParse(variableXPosition, out int xPos)) { throw new Exception("X Position Invalid - " + v_XWindowPosition); } if (!int.TryParse(variableYPosition, out int yPos)) { throw new Exception("X Position Invalid - " + v_XWindowPosition); } User32Functions.SetWindowPosition(targetedWindow, xPos, yPos); } }
public async override Task RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; var browserObject = ((OBAppInstance)await v_InstanceName.EvaluateCode(engine)).Value; var chromeProcess = (Process)browserObject; User32Functions.SetWindowState(chromeProcess.MainWindowHandle, WindowState.SwMaximize); }
public override void RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; var mouseX = v_XMousePosition.ConvertUserVariableToString(engine); var mouseY = v_YMousePosition.ConvertUserVariableToString(engine); User32Functions.SendMouseMove(mouseX, mouseY, v_MouseClick); }
public override void RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; //convert window name string windowName = v_WindowName.ConvertUserVariableToString(engine); int timeout = Int32.Parse(v_Timeout); DateTime timeToEnd = DateTime.Now.AddSeconds(timeout); List <IntPtr> targetWindows = new List <IntPtr>(); while (timeToEnd >= DateTime.Now) { try { if (engine.IsCancellationPending) { break; } targetWindows = User32Functions.FindTargetWindows(windowName); if (targetWindows.Count == 0) { throw new Exception($"Window '{windowName}' Not Yet Found... "); } break; } catch (Exception) { engine.ReportProgress($"Window '{windowName}' Not Yet Found... " + (timeToEnd - DateTime.Now).Minutes + "m, " + (timeToEnd - DateTime.Now).Seconds + "s remain"); Thread.Sleep(500); } } targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window and set the window state foreach (var targetedWindow in targetWindows) { WindowState WINDOW_STATE = WindowState.SwShowNormal; switch (v_WindowState) { case "Maximize": WINDOW_STATE = WindowState.SwMaximize; break; case "Minimize": WINDOW_STATE = WindowState.SwMinimize; break; case "Restore": WINDOW_STATE = WindowState.SwRestore; break; default: break; } User32Functions.SetWindowState(targetedWindow, WINDOW_STATE); } }
public async override Task RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; var mouseX = (int)await v_XMousePosition.EvaluateCode(engine); var mouseY = (int)await v_YMousePosition.EvaluateCode(engine); User32Functions.SendMouseMove(mouseX, mouseY, v_MouseClick); }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); var variableXPosition = v_XMousePosition.ConvertUserVariableToString(engine); var variableYPosition = v_YMousePosition.ConvertUserVariableToString(engine); User32Functions.MoveWindow(windowName, variableXPosition, variableYPosition); }
public static AutomationElement SearchForGUIElement(IAutomationEngineInstance engine, DataTable uiaSearchParams, string variableWindowName) { User32Functions.ActivateWindow(variableWindowName); //create search params var searchParams = from rw in uiaSearchParams.AsEnumerable() where rw.Field <string>("Enabled") == "True" select rw; //create and populate condition list var conditionList = new List <Condition>(); foreach (var param in searchParams) { var parameterName = (string)param["Parameter Name"]; var parameterValue = (string)param["Parameter Value"]; parameterValue = parameterValue.ConvertUserVariableToString(engine); PropertyCondition propCondition; if (bool.TryParse(parameterValue, out bool bValue)) { propCondition = CreatePropertyCondition(parameterName, bValue); } else { propCondition = CreatePropertyCondition(parameterName, parameterValue); } conditionList.Add(propCondition); } //concatenate or take first condition Condition searchConditions; if (conditionList.Count > 1) { searchConditions = new AndCondition(conditionList.ToArray()); } else { searchConditions = conditionList[0]; } //find window var windowElement = AutomationElement.RootElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, variableWindowName)); //if window was not found if (windowElement == null) { throw new Exception("Window named '" + variableWindowName + "' was not found!"); } //find required handle based on specified conditions var element = windowElement.FindFirst(TreeScope.Descendants, searchConditions); return(element); }
private Process GetProcess(int XCoordinate, int YCoordinate) { DPoint point = new DPoint(XCoordinate, YCoordinate); var window = User32Functions.WindowFromPoint(point); User32Functions.GetWindowThreadProcessId(window, out uint processId); Process process = Process.GetProcessById((int)processId); return(process); }
private string GetWindowName(int XCoordinate, int YCoordinate) { DPoint point = new DPoint(XCoordinate, YCoordinate); var window = User32Functions.WindowFromPoint(point); User32Functions.GetWindowThreadProcessId(window, out uint processId); Process process = Process.GetProcessById((int)processId); var windowName = process.MainWindowTitle; return(windowName); }
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); WebElement webElement = await NativeHelper.DataTableToWebElement(v_NativeSearchParameters, engine); User32Functions.BringWindowToFront(chromeProcess.MainWindowHandle); string responseText; NativeRequest.ProcessRequest("gettable", JsonConvert.SerializeObject(webElement), vTimeout, out responseText); NativeResponse responseObject = JsonConvert.DeserializeObject <NativeResponse>(responseText); if (responseObject.Status == "Failed") { throw new Exception(responseObject.Result); } HtmlDocument doc = new HtmlDocument(); //Load Source (String) as HTML Document doc.LoadHtml(responseObject.Result); //Get Header Tags var headers = doc.DocumentNode.SelectNodes("//tr/th"); DataTable DT = new DataTable(); //If headers found if (headers != null && headers.Count != 0) { // add columns from th (headers) foreach (HtmlNode header in headers) { DT.Columns.Add(Regex.Replace(header.InnerText, @"\t|\n|\r", "").Trim()); } } else { var columnsCount = doc.DocumentNode.SelectSingleNode("//tr[1]").ChildNodes.Where(node => node.Name == "td").Count(); DT.Columns.AddRange((Enumerable.Range(1, columnsCount).Select(dc => new DataColumn())).ToArray()); } // select rows with td elements and load each row (containing <td> tags) into DataTable foreach (var row in doc.DocumentNode.SelectNodes("//tr[td]")) { DT.Rows.Add(row.SelectNodes("td").Select(td => Regex.Replace(td.InnerText, @"\t|\n|\r", "").Trim()).ToArray()); } DT.SetVariableValue(engine, v_OutputUserVariableName); }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; if (v_WindowName != "Current Window") { ActivateWindowCommand activateWindow = new ActivateWindowCommand { v_WindowName = v_WindowName }; activateWindow.RunCommand(sender); } string textToSend = v_TextToSend.ConvertUserVariableToString(engine); if (v_EncryptionOption == "Encrypted") { textToSend = EncryptionServices.DecryptString(textToSend, "TASKT"); } if (textToSend == "{WIN_KEY}") { User32Functions.KeyDown(System.Windows.Forms.Keys.LWin); User32Functions.KeyUp(System.Windows.Forms.Keys.LWin); } else if (textToSend.Contains("{WIN_KEY+")) { User32Functions.KeyDown(System.Windows.Forms.Keys.LWin); var remainingText = textToSend.Replace("{WIN_KEY+", "").Replace("}", ""); foreach (var c in remainingText) { System.Windows.Forms.Keys key = (System.Windows.Forms.Keys)Enum.Parse(typeof(System.Windows.Forms.Keys), c.ToString()); User32Functions.KeyDown(key); } User32Functions.KeyUp(System.Windows.Forms.Keys.LWin); foreach (var c in remainingText) { System.Windows.Forms.Keys key = (System.Windows.Forms.Keys)Enum.Parse(typeof(System.Windows.Forms.Keys), c.ToString()); User32Functions.KeyUp(key); } } else { System.Windows.Forms.SendKeys.SendWait(textToSend); } System.Threading.Thread.Sleep(500); }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); var targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window foreach (var targetedWindow in targetWindows) { User32Functions.CloseWindow(targetedWindow); } }
public override void RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; string windowName = v_WindowName.ConvertUserVariableToString(engine); var variableXSize = v_XWindowSize.ConvertUserVariableToString(engine); var variableYSize = v_YWindowSize.ConvertUserVariableToString(engine); int timeout = Int32.Parse(v_Timeout); DateTime timeToEnd = DateTime.Now.AddSeconds(timeout); List <IntPtr> targetWindows = new List <IntPtr>(); while (timeToEnd >= DateTime.Now) { try { if (engine.IsCancellationPending) { break; } targetWindows = User32Functions.FindTargetWindows(windowName); if (targetWindows.Count == 0) { throw new Exception($"Window '{windowName}' Not Yet Found... "); } break; } catch (Exception) { engine.ReportProgress($"Window '{windowName}' Not Yet Found... " + (timeToEnd - DateTime.Now).Minutes + "m, " + (timeToEnd - DateTime.Now).Seconds + "s remain"); Thread.Sleep(500); } } targetWindows = User32Functions.FindTargetWindows(windowName); //loop each window and set the window state foreach (var targetedWindow in targetWindows) { User32Functions.SetWindowState(targetedWindow, WindowState.SwShowNormal); if (!int.TryParse(variableXSize, out int xPos)) { throw new Exception("Width Invalid - " + v_XWindowSize); } if (!int.TryParse(variableYSize, out int yPos)) { throw new Exception("Height Invalid - " + v_YWindowSize); } User32Functions.SetWindowSize(targetedWindow, xPos, yPos); } }