Ejemplo n.º 1
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 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;
            }
        }
Ejemplo n.º 5
0
        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!");
            }
        }
Ejemplo n.º 7
0
        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!");
            }
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 11
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 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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 15
0
        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!");
            }
        }
Ejemplo n.º 16
0
        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;
            }
        }
Ejemplo n.º 17
0
        public override void RunCommand(object sender)
        {
            var    image = User32Functions.CaptureWindow(v_ScreenshotWindowName);
            string ConvertToUserVariabledString = v_FilePath.ConvertToUserVariable(sender);

            image.Save(ConvertToUserVariabledString);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 20
0
        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);
            }
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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);
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 29
0
        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);
            }
        }
Ejemplo n.º 30
0
        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);
            }
        }