コード例 #1
98
ファイル: Capture.cs プロジェクト: eefret/hdt-plugin-endgame
		// Take a screenshot using the print screen button
		public static async Task Simple(int delay)
		{
			Logger.WriteLine("Capture (Simple) @ " + delay, "EndGame");
			await Task.Delay(delay);
			var sim = new WindowsInput.InputSimulator();
			sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.SNAPSHOT);
		}
コード例 #2
0
ファイル: Program.cs プロジェクト: wlpwz/bind-refactor
        /// <summary>
        /// 检查系统 方面
        /// </summary>
        /// <param name="_isrunning"></param>
        private static bool CheckedSystem(bool _isrunning)
        {
            try
            {
                var sim = new WindowsInput.InputSimulator();
                sim.Mouse.LeftButtonClick();
            }
            catch (Exception ex)
            {
                CommonFunction.WriteLogInFile(ex.ToString(), LogType.RunLog);
                MessageBox.Show("关闭杀毒软件,或者目录添加为白名单!", "配置异常", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }

            // 如果处在运行中,不需要再次启动 IP精灵
            CommonParameter.IPElfIsInit = _isrunning;
            if (!_isrunning)
            {
                var _retStr = CommonParameter.IpelfCurrentInstance.InitLogin();
                if (!string.IsNullOrEmpty(_retStr))
                {
                    MessageBox.Show(_retStr, "配置异常", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return(false);
                }
            }

            if (DateTime.Now.Date != LicenseHelper.getWebsiteDatetime().Date)
            {
                MessageBox.Show("系统时间不正确!请同步互联网时间!", "系统异常", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(false);
            }

            return(true);
        }
コード例 #3
0
        private void getProccess()
        {
            Process[] processes = Process.GetProcesses();
            Console.WriteLine("Proccesses found.");
            Regex test = new Regex(@"[fF][fF]7(_[a-z]{2}){0,1}\.exe");

            foreach (Process proc in processes)
            {
                try
                {
                    string[] procPath    = proc.MainModule.FileName.Split('\\');
                    string   procExeName = procPath[procPath.Length - 1];
                    if (test.IsMatch(procExeName))
                    {
                        ff7 = proc;
                        procPath[procPath.Length - 1] = "";
                        BasePath = String.Join("\\", procPath);
                        break;
                    }
                }
                catch (Exception) { }
            }

            try
            {
                inputSim     = new WindowsInput.InputSimulator();
                keySim       = new WindowsInput.KeyboardSimulator(inputSim);
                windowHandle = ff7.MainWindowHandle;
            }
            catch (Exception) { }
        }
コード例 #4
0
ファイル: Bot.cs プロジェクト: LaserYGD/Intralism-Bot-2020
 private static void Press(bool right = false, bool down = false, bool left = false, bool up = false)
 {
     WindowsInput.InputSimulator wi = new WindowsInput.InputSimulator();
     if (right)
     {
         wi.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.RIGHT);
     }
     if (down)
     {
         wi.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.DOWN);
     }
     if (left)
     {
         wi.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.LEFT);
     }
     if (up)
     {
         wi.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.UP);
     }
     wi.Keyboard.Sleep(1);
     wi.Keyboard.KeyUp(WindowsInput.Native.VirtualKeyCode.RIGHT);
     wi.Keyboard.KeyUp(WindowsInput.Native.VirtualKeyCode.DOWN);
     wi.Keyboard.KeyUp(WindowsInput.Native.VirtualKeyCode.LEFT);
     wi.Keyboard.KeyUp(WindowsInput.Native.VirtualKeyCode.UP);
 }
コード例 #5
0
        public void KeyUpSimulator(Keys key)
        {
            var code = (WindowsInput.Native.VirtualKeyCode)Enum.Parse(typeof(WindowsInput.Native.VirtualKeyCode), ((int)key).ToString());
            var dll  = new WindowsInput.InputSimulator();

            dll.Keyboard.KeyUp(code);
        }
コード例 #6
0
 internal static void ToggleTaskView()
 {
     Task.Factory.StartNew(() =>
     {
         WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
         kb.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.TAB);
     });
 }
コード例 #7
0
 //Simulate a single middle button click at the XY position passed in.
 public static void MiddleMouseButton(int xpos, int ypos)
 {
     //Instantiate mouse simulator object.
     WindowsInput.InputSimulator mouseSim = new WindowsInput.InputSimulator();
     //Move cursor to screen position pass in.
     SetCursorPos(xpos, ypos);
     //Call middle button click function at the cursor's current location.
     mouseSim.Mouse.MiddleButtonClick();
 }
コード例 #8
0
ファイル: Capture.cs プロジェクト: andburn/hs-lab
        // Take a screenshot using the print screen button
        public static async Task Simple(int delay)
        {
            Log.Info("Capture (Simple) @ " + delay, "EndGame");
            await Task.Delay(delay);

            var sim = new WindowsInput.InputSimulator();

            sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.SNAPSHOT);
        }
 void CompositionTarget_Rendering(object sender, EventArgs e)
 {
     if ((Keyboard.GetKeyStates(Key.V) & KeyStates.Down) > 0 && (Keyboard.GetKeyStates(Key.LeftCtrl) & KeyStates.Down) > 0 && VirtualBuffer.Password != null)
     {
         Clipboard.SetText(Crypto.DecryptBuffer(VirtualBuffer.Password));
         WindowsInput.InputSimulator s = new WindowsInput.InputSimulator();
         s.Keyboard.ModifiedKeyStroke(VirtualKeyCode.CONVERT, VirtualKeyCode.VK_V);
     }
 }
コード例 #10
0
 //Simulate the left mouse button being released.
 public static void LeftMouseReleased(int xpos, int ypos)
 {
     //Instantiate mouse simulator object.
     WindowsInput.InputSimulator mouseSim = new WindowsInput.InputSimulator();
     //Move cursor to screen position pass in.
     SetCursorPos(xpos, ypos);
     //Call left button down function at the cursor's current location.
     mouseSim.Mouse.LeftButtonUp();
 }
コード例 #11
0
 //Simulate a single click the left mouse button at th XY position passed in.
 public static void LeftMouseClick(int xpos, int ypos)
 {
     //Instantiate mouse simulator object.
     WindowsInput.InputSimulator mouseSim = new WindowsInput.InputSimulator();
     //Move cursor to screen position pass in.
     SetCursorPos(xpos, ypos);
     //Call left button click function at the cursor's current location.
     mouseSim.Mouse.LeftButtonClick();
     mouseSim.Keyboard.KeyPress(VirtualKeyCode.CONTROL);
 }
コード例 #12
0
 static Target()
 {
     if (Target.keyConverter == null)
     {
         Target.keyConverter = new KeyConverter();
     }
     if (Target.inputSimulator == null)
     {
         Target.inputSimulator = new WindowsInput.InputSimulator();
     }
 }
コード例 #13
0
        public void PerformDragFromCol_aToCol_b(IWebDriver driver, string Col1, string Col2)
        {
            log.Info("doing drag and drop from " + Col1 + " to " + Col2);
            string elementIdOne = "column-" + Col1;
            string elementIdTwo = "column-" + Col2;
            By     OneBy        = By.Id(elementIdOne);
            By     TwoBy        = By.Id(elementIdTwo);

            //Drag from column 1 to column 2
            //IWebElement From = driver.FindElement(By.XPath("//div[@id='column-" + Col1 + "']"));
            //IWebElement To = driver.FindElement(By.XPath("//div[@id='column-" + Col2 + "']"));


            IWebElement elementOneFrom = driver.FindElement(OneBy);
            IWebElement elementTwoTo   = driver.FindElement(TwoBy);

            Actions ac = new Actions(driver);

            // drag a onto b
            log.Debug("drag element A onto B");
            //ac.DragAndDrop(elementOneFrom, elementTwoTo).Build().Perform();

            // ac.DragAndDropToOffset(elementOneFrom, 100, 200).Build().Perform();
            // this should drop it
            Task.Delay(1000).Wait();

            //Actions act = new Actions(driver);
            //act.DragAndDrop(From, To).Build().Perform();

            /*      Actions actions = ac.ClickAndHold(elementOneFrom);
             *      actions.MoveToElement(elementTwoTo);
             *      actions.Release();
             *      actions.Build();
             *      actions.Perform();
             */

            // cant get actions or draganddrop to work so using simulator which also isnt working
            var sim = new WindowsInput.InputSimulator(); //using nugget package by michael noonan

            int x1 = elementOneFrom.Location.X;
            int y1 = elementOneFrom.Location.Y;
            int x2 = elementTwoTo.Location.X;
            int y2 = elementTwoTo.Location.Y;

            sim.Mouse.MoveMouseTo(x1, y1); // move mouse above the viewport pane
            Task.Delay(1000).Wait();
            sim.Mouse.LeftButtonDown();
            sim.Mouse.MoveMouseTo(x2, y2); // move mouse above the viewport pane
            Task.Delay(1000).Wait();
            sim.Mouse.LeftButtonUp();
            Task.Delay(1000).Wait();
        }
コード例 #14
0
ファイル: MainWindow.xaml.cs プロジェクト: astruyk/KeyOverlay
        private void CommandShift_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            var simulator = new WindowsInput.InputSimulator();

            if (_isShiftPressed)
            {
                simulator.Keyboard.KeyUp(WindowsInput.Native.VirtualKeyCode.SHIFT);
            }
            else
            {
                simulator.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.SHIFT);
            }
            _isShiftPressed = !_isShiftPressed;
        }
コード例 #15
0
ファイル: Command.cs プロジェクト: dalibor91/winctrl-server
        public ExecutedCommand Execute()
        {
            ExecutedCommand cmd = new ExecutedCommand();

            cmd.Uuid = this.Uuid;

            WindowsInput.InputSimulator simulator = new WindowsInput.InputSimulator();

            cmd.Success = true;

            switch (Command)
            {
            case "mouse_info":
                cmd.Result = new MouseInfoCommand().Execute();
                break;

            case "mouse_click":
                MouseClickCommand _cmdClick = new MouseClickCommand(simulator);
                _cmdClick.SetData(ConvertObject <MouseClickInput>(Data));
                cmd.Result = _cmdClick.Execute();
                break;

            case "mouse_move":
                MouseMoveCommand _cmdMove = new MouseMoveCommand(simulator);
                _cmdMove.SetData(ConvertObject <MouseMoveInput>(Data));
                cmd.Result = _cmdMove.Execute();
                break;

            case "keyboard_input":
                KeyboardInputCommand _keyboardCommand = new KeyboardInputCommand(simulator);
                _keyboardCommand.SetData(ConvertObject <KeyboardInputInput>(Data));
                cmd.Result = _keyboardCommand.Execute();
                break;

            case "process_list":
                ProcessCommand _processCommand = new ProcessCommand();
                _processCommand.SetData(ConvertObject <ProcessInput>(Data));
                cmd.Result = _processCommand.Execute();
                break;

            default:
                cmd.ErrorMessage = "Command not found";
                cmd.Success      = false;

                break;
            }

            return(cmd);
        }
コード例 #16
0
        public Form1()
        {
            InitializeComponent();

            InputSimulator    = new WindowsInput.InputSimulator();
            MouseSimulator    = new WindowsInput.MouseSimulator(InputSimulator);
            KeyboardSimulator = new WindowsInput.KeyboardSimulator(InputSimulator);

            ButtonStop.Enabled = false;

            HookEvents = Hook.GlobalEvents();

            BackgroundWorker = new BackgroundWorker()
            {
                WorkerSupportsCancellation = true
            };
            BackgroundWorker.DoWork             += BackgroundWorker_DoWork;
            BackgroundWorker.RunWorkerCompleted += BackgroundWorker_RunWorkerCompleted;

            ConfigInExecution = -1;

            RadioButtonProfitByValue.Checked      = Properties.Settings.Default.RadioButtonProfitByValue_Checked;
            RadioButtonProfitByPercentage.Checked = Properties.Settings.Default.RadioButtonProfitByPercentage_Checked;
            NumericUpDownMaxSpent.Value           = Properties.Settings.Default.NumericUpDownMaxSpent_Value;
            NumericUpDownProfitByValue.Value      = Properties.Settings.Default.NumericUpDownProfitByValue_Value;
            NumericUpDownProfitByPercentage.Value = Properties.Settings.Default.NumericUpDownProfitByPercentage_Value;

            SearchTextPosition       = Properties.Settings.Default.SearchTextPosition;
            FirstItemPosition        = Properties.Settings.Default.FirstItemPosition;
            FirstValuePositionTop    = Properties.Settings.Default.FirstValuePositionTop;
            FirstValuePositionBottom = Properties.Settings.Default.FirstValuePositionBottom;
            FirstCountPositionTop    = Properties.Settings.Default.FirstCountPositionTop;
            FirstCountPositionBottom = Properties.Settings.Default.FirstCountPositionBottom;
            ChangeCountPosition      = Properties.Settings.Default.ChangeCountPosition;
            AcceptButtonPosition     = Properties.Settings.Default.AcceptButtonPosition;

            IsSearchTextPositionConfigured   = Properties.Settings.Default.IsSearchTextPositionConfigured;
            IsFirstItemPositionConfigured    = Properties.Settings.Default.IsFirstItemPositionConfigured;
            IsFirstValuePositionConfigured   = Properties.Settings.Default.IsFirstValuePositionConfigured;
            IsFirstCountPositionConfigured   = Properties.Settings.Default.IsFirstCountPositionConfigured;
            IsChangeCountPositionConfigured  = Properties.Settings.Default.IsChangeCountPositionConfigured;
            IsAcceptButtonPositionConfigured = Properties.Settings.Default.IsAcceptButtonPositionConfigured;

            NumericUpDownDelayToRiskOperations.Value = Properties.Settings.Default.NumericUpDownDelayToRiskOperations_Value;

            AskToConfigurePositions();
        }
コード例 #17
0
        public static void ChangeText()//IntPtr wParam, IntPtr lParam)
        {
            IsHotKeyAccess = false;
            WindowsInput.InputSimulator _InputSimulator = new WindowsInput.InputSimulator();

            try
            {
                //var PointWindow = GetWindowUnderCursor();

                Scripts.Engine.ClipboardData.TempClipboard = Scripts.Engine.ClipboardData.GetClipboardData();
                Scripts.Engine.ClipboardData.ClipboardClear();

                _InputSimulator.Keyboard.ModifiedKeyStroke(WindowsInput.Native.VirtualKeyCode.CONTROL, WindowsInput.Native.VirtualKeyCode.VK_C);
                //SendMessage(hWnd: PointWindow, Msg: WM_COPY, wParam: 0, lParam: 0);

                Thread.Sleep(50);

                if (Scripts.Engine.ClipboardData.GetText().Length > 0)
                {
                    Thread.Sleep(50);
                    var result = TranslateText(Text: Scripts.Engine.ClipboardData.GetText());

                    Scripts.Engine.ClipboardData.SetText(p_Text: result);
                    Thread.Sleep(50);

                    _InputSimulator.Keyboard.ModifiedKeyStroke(WindowsInput.Native.VirtualKeyCode.CONTROL, WindowsInput.Native.VirtualKeyCode.VK_V);

                    //SendMessage(hWnd: PointWindow, Msg: WM_PASTE, wParam: 0, lParam: 0);

                    Thread.Sleep(50);
                }
            }
            catch (Exception) {  }

            //MessageBox.Show(lol);

            Thread.Sleep(50);
            Scripts.Engine.ClipboardData.SetClipboardData(Dictionary: Scripts.Engine.ClipboardData.TempClipboard);

            Thread.Sleep(50);
            Scripts.Engine.ClipboardData.TempClipboard.Clear();

            IsHotKeyAccess = true;
        }
コード例 #18
0
ファイル: XInputHolder.cs プロジェクト: shockdude/WiitarThing
        public XInputHolder()
        {
#if MouseMode
            _inputSim = new WindowsInput.InputSimulator();
#endif
            //Values = new Dictionary<string, float>();
            Values   = new System.Collections.Concurrent.ConcurrentDictionary <string, float>();
            Mappings = new Dictionary <string, string>();
            Flags    = new Dictionary <string, bool>();
            ResetReport();

            //if (!Flags.ContainsKey(Inputs.Flags.RUMBLE))
            //{
            //    Flags.Add(Inputs.Flags.RUMBLE, false);
            //}
            //
            //if (!Values.ContainsKey(Inputs.Flags.RUMBLE))
            //{
            //    Values.TryAdd(Inputs.Flags.RUMBLE, 0f);
            //}
        }
コード例 #19
0
        public static void ShowChangeText()
        {
            IsHotKeyAccess = false;

            WindowsInput.InputSimulator _InputSimulator = new WindowsInput.InputSimulator();

            try
            {
                //var PointWindow = GetWindowUnderCursor();

                Scripts.Engine.ClipboardData.TempClipboard = Scripts.Engine.ClipboardData.GetClipboardData();
                Scripts.Engine.ClipboardData.ClipboardClear();

                //SendMessage(hWnd: PointWindow, Msg: WM_COPY, wParam: 0, lParam: 0);
                _InputSimulator.Keyboard.ModifiedKeyStroke(WindowsInput.Native.VirtualKeyCode.CONTROL, WindowsInput.Native.VirtualKeyCode.VK_C);

                Thread.Sleep(50);

                if (Scripts.Engine.ClipboardData.GetText().Length > 0)
                {
                    if (!Program.ShowTransliteration.Visible)
                    {
                        Program.ShowTransliteration.Show();
                    }

                    Program.ShowTransliteration.FormLocation();
                    Program.ShowTransliteration.TextLine = TranslateText(Text: Scripts.Engine.ClipboardData.GetText());
                }
            }
            catch (Exception) { }

            Thread.Sleep(50);
            Scripts.Engine.ClipboardData.SetClipboardData(Dictionary: Scripts.Engine.ClipboardData.TempClipboard);

            Thread.Sleep(50);
            Scripts.Engine.ClipboardData.TempClipboard.Clear();

            IsHotKeyAccess = true;
        }
コード例 #20
0
        /// <summary>
        /// 移动并左键点击
        /// </summary>
        internal static void SimMoveAndLefClick(int _x, int _y, bool _click)
        {
            var sim   = new WindowsInput.InputSimulator();
            int sim_x = CommonParameter.FormX + _x + ConstParameter.RandomSeed.Next(10, 200);
            int sim_y = CommonParameter.FormY + ConstParameter.BrowerY + _y % 300 + ConstParameter.RandomSeed.Next(5, 15);

            if (_y > 300)
            {
                // 则需要滚动滑轮
                sim.Mouse
                .VerticalScroll((-_y / 300) * 3)
                .Sleep(CommonParameter.ConfigParam.simulate_speed.mouse_scroll.ToRandom());     // 必须先取整
            }

            sim.Mouse
            .MoveMouseTo(CommonParameter.CurrentScreenWidth * sim_x, CommonParameter.CurrentScreenHeight * sim_y)
            .Sleep(1000);

            if (_click)
            {
                sim.Mouse.LeftButtonClick();
            }
        }
コード例 #21
0
ファイル: WindowMotor.cs プロジェクト: Arcitectus/Sanderling
		public MotionResult ActSequenceMotion(IEnumerable<Motion> seqMotion)
		{
			try
			{
				if (null == seqMotion)
					return null;

				var InputSimulator = new WindowsInput.InputSimulator();

				foreach (var Motion in seqMotion.WhereNotDefault())
				{
					var MotionMousePosition = Motion?.MousePosition;
					var MotionTextEntry = Motion?.TextEntry;
					var mouseLocationOnScreen = MotionMousePosition.HasValue ? WindowHandle.ClientToScreen(MotionMousePosition.Value) + MouseOffsetStatic : null;

					if (mouseLocationOnScreen.HasValue || (Motion.WindowToForeground ?? false))
						EnsureWindowIsForeground();

					if (mouseLocationOnScreen.HasValue)
					{
						User32.SetCursorPos((int)mouseLocationOnScreen.Value.A, (int)mouseLocationOnScreen.Value.B);

						Thread.Sleep(MouseEventTimeDistanceMilli);
					}

					var mouseSetAction = new[]
					{
						Motion?.MouseButtonDown?.Select(button => new KeyValuePair<MouseButtonIdEnum, bool>(button, true)),
						Motion?.MouseButtonUp?.Select(button => new KeyValuePair<MouseButtonIdEnum, bool>(button, false)),
					}.ConcatNullable().ToArray();

					if (0 < mouseSetAction?.Length)
					{
						foreach (var mouseAction in mouseSetAction)
							mouseActionFromButtonIdAndState?.TryGetValueOrDefault(mouseAction)?.Invoke(InputSimulator.Mouse);

						Thread.Sleep(MouseEventTimeDistanceMilli);
					}

					Motion?.KeyDown?.ForEach(keyDown =>
					{
						EnsureWindowIsForeground();
						InputSimulator.Keyboard.KeyDown(keyDown);
						Thread.Sleep(KeyboardEventTimeDistanceMilli);
					});

					Motion?.KeyUp?.ForEach(keyUp =>
					{
						EnsureWindowIsForeground();
						InputSimulator.Keyboard.KeyUp(keyUp);
						Thread.Sleep(KeyboardEventTimeDistanceMilli);
					});

					if (0 < MotionTextEntry?.Length)
					{
						EnsureWindowIsForeground();
						InputSimulator.Keyboard.TextEntry(MotionTextEntry);
					}
				}

				return new MotionResult(true);
			}
			catch (Exception Exception)
			{
				return new MotionResult(Exception);
			}
		}
コード例 #22
0
        SictNaacProcessWirkung[] ScritWirkungFüüreAus(
            SictVorsclaagNaacProcessWirkung[] VorsclaagListeWirkung,
            IntPtr GbsAingaabeWaalZiilProzesWindowHandle)
        {
            if (null == VorsclaagListeWirkung)
            {
                return(null);
            }

            var VorherForegroundWindowHandle = Bib3.Windows.User32.GetForegroundWindow();

            SictNaacProcessWirkungTailMausErgeebnis WirkungTailMausErgeebnis = null;

            var NaacZiilProcessListeWirkung = new SictNaacProcessWirkung[VorsclaagListeWirkung.Length];

            for (int VorsclaagWirkungIndex = 0; VorsclaagWirkungIndex < VorsclaagListeWirkung.Length; VorsclaagWirkungIndex++)
            {
                var VorsclaagWirkung = VorsclaagListeWirkung[VorsclaagWirkungIndex];

                var WirkungBeginZaitMili = Bib3.Glob.StopwatchZaitMikroSictInt() / 1000;

                System.Exception WirkungException = null;

                try
                {
                    var MengeKey = VorsclaagWirkung.MengeWirkungKey;

                    var MausPfaadListeWeegpunktFläce = VorsclaagWirkung.MausPfaadListeWeegpunktFläce;
                    var MausPfaadTasteLinksAin       = VorsclaagWirkung.MausPfaadTasteLinksAin;
                    var MausPfaadTasteRectsAin       = VorsclaagWirkung.MausPfaadTasteRectsAin;
                    var AingaabeText = VorsclaagWirkung.AingaabeText;

                    bool WirkungNict = false;

                    if (null != MengeKey ||
                        null != MausPfaadListeWeegpunktFläce ||
                        true == MausPfaadTasteLinksAin ||
                        true == MausPfaadTasteRectsAin ||
                        !AingaabeText.NullOderLeer())
                    {
                        if (VorherForegroundWindowHandle != GbsAingaabeWaalZiilProzesWindowHandle)
                        {
                            if (GbsAingaabeEveOnlnAutoWirkungSetForegroundNict)
                            {
                                WirkungNict = true;
                            }
                            else
                            {
                                var VersuucSetForegroundWindowErgeebnis = Bib3.Windows.User32.SetForegroundWindow(GbsAingaabeWaalZiilProzesWindowHandle);

                                if (!VersuucSetForegroundWindowErgeebnis)
                                {
                                    WirkungNict = true;
                                }
                            }
                        }
                    }

                    if (!WirkungNict)
                    {
                        var inputSimulator = new WindowsInput.InputSimulator();

                        var WirkungTailMausDauer = new SictMesungZaitraumAusStopwatch(true);

                        WirkungTailMausErgeebnis = MausWirkungFüüreAus(VorsclaagWirkung, 1, 4);

                        WirkungTailMausDauer.EndeSezeJezt();

                        if (null != MengeKey)
                        {
                            foreach (var Key in MengeKey)
                            {
                                var MengeModifier = Key.MengeModifier;

                                if (null != MengeModifier)
                                {
                                }
                                else
                                {
                                    if (null != Key.MengeKey)
                                    {
                                        foreach (var KeyKey in Key.MengeKey)
                                        {
                                            var KeyKeySictInputSimulator = Glob.VonWindowsInputKeyNaacInputSimulatorVirtualKeyCode((System.Windows.Input.Key)KeyKey);

                                            inputSimulator.Keyboard.KeyPress(KeyKeySictInputSimulator);
                                        }
                                    }
                                }
                            }
                        }

                        if (!AingaabeText.NullOderLeer())
                        {
                            inputSimulator.Keyboard.TextEntry(AingaabeText);
                        }
                    }
                }
                catch (System.Exception Exception)
                {
                    WirkungException = Exception;
                }
                finally
                {
                    var WirkungEndeZaitMili = Bib3.Glob.StopwatchZaitMikroSictInt() / 1000;

                    var WirkungErfolg = ((null == WirkungTailMausErgeebnis) ? true : WirkungTailMausErgeebnis.Erfolg) ?? false;

                    if (null != WirkungTailMausErgeebnis)
                    {
                        if (!(true == WirkungTailMausErgeebnis.Erfolg))
                        {
                        }
                    }

                    var ExceptionSictJsonAbbild = SictExceptionSictJson.ExceptionSictJson(WirkungException);

                    var NaacZiilProcessWirkung = new SictNaacProcessWirkung(
                        WirkungBeginZaitMili,
                        WirkungEndeZaitMili,
                        VorsclaagWirkung.Ident,
                        WirkungTailMausErgeebnis,
                        WirkungErfolg,
                        ExceptionSictJsonAbbild);

                    NaacZiilProcessListeWirkung[VorsclaagWirkungIndex] = NaacZiilProcessWirkung;
                }
            }

            return(NaacZiilProcessListeWirkung.ToArray());
        }
コード例 #23
0
        static void performTaskOnWindow(Request.TaskOnIdentifiedWindowStructure taskOnIdentifiedWindow)
        {
            var windowHandle = new IntPtr(taskOnIdentifiedWindow.windowId.WindowHandleFromInt);

            var windowRect = new WinApi.Rect();

            if (WinApi.GetWindowRect(windowHandle, ref windowRect) == IntPtr.Zero)
            {
                return;
            }

            var inputSimulator = new WindowsInput.InputSimulator();

            var task = taskOnIdentifiedWindow.task;

            if (task.BringWindowToForeground != null)
            {
                WinApi.SetForegroundWindow(windowHandle);
                WinApi.ShowWindow(windowHandle, WinApi.SW_RESTORE);
            }

            if (task.MoveMouseToLocation != null)
            {
                WinApi.SetCursorPos(
                    task.MoveMouseToLocation.x + windowRect.left,
                    task.MoveMouseToLocation.y + windowRect.top);
            }

            if (task.MouseButtonDown != null)
            {
                if (task.MouseButtonDown.MouseButtonLeft != null)
                {
                    inputSimulator.Mouse.LeftButtonDown();
                }

                if (task.MouseButtonDown.MouseButtonRight != null)
                {
                    inputSimulator.Mouse.RightButtonDown();
                }
            }

            if (task.MouseButtonUp != null)
            {
                if (task.MouseButtonUp.MouseButtonLeft != null)
                {
                    inputSimulator.Mouse.LeftButtonUp();
                }

                if (task.MouseButtonUp.MouseButtonRight != null)
                {
                    inputSimulator.Mouse.RightButtonUp();
                }
            }

            if (task.KeyboardKeyDown != null)
            {
                inputSimulator.Keyboard.KeyDown((WindowsInput.Native.VirtualKeyCode)task.KeyboardKeyDown.KeyboardKeyFromVirtualKeyCode);
            }

            if (task.KeyboardKeyUp != null)
            {
                inputSimulator.Keyboard.KeyUp((WindowsInput.Native.VirtualKeyCode)task.KeyboardKeyUp.KeyboardKeyFromVirtualKeyCode);
            }
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: Abhiseshan/swipe10
        private void SynTP_Dev_OnPacket()
        {
            SynTP_Dev.LoadPacket(SynTP_Pack);
            //Console.WriteLine(SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ExtraFingerState));
            try {
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_AcquireUnacquireGestures) != -1) Console.WriteLine("SP_AcquireUnacquireGestures " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_AcquireUnacquireGestures));
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_Gestures) != 3) Console.WriteLine("SynDeviceProperty.SP_Gestures " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_Gestures));
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_IsHScroll) != 0) Console.WriteLine("SynDeviceProperty.SP_IsHScroll " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_IsHScroll));
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_MultiFingerGestures) != 7730) Console.WriteLine("SynDeviceProperty.SP_MultiFingerGestures " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_MultiFingerGestures));
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_SecondaryGestures) != 0) Console.WriteLine("SynDeviceProperty.SP_SecondaryGestures" + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_SecondaryGestures));
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_VerticalScrollingFlags) != 4) Console.WriteLine("SynDeviceProperty.SP_VerticalScrollingFlags " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_VerticalScrollingFlags));
                //if (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_2FVerticalScrollingFlags) != 69) Console.WriteLine("SynDeviceProperty.SP_2FVerticalScrollingFlags " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_2FVerticalScrollingFlags));
                //Console.WriteLine("ydEKTA= " + SynTP_Pack.GetLongProperty(SynPacketProperty.SP_YDelta));
                //Console.WriteLine("Y= " +SynTP_Pack.GetLongProperty(SynPacketProperty.SP_Y));
                //Console.WriteLine("ymICKEYS= " + SynTP_Pack.GetLongProperty(SynPacketProperty.SP_YMickeys));
                //Console.WriteLine("SP_YDPI= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YDPI));
                //Console.WriteLine("SP_YHiBorder= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YHiBorder));
                //Console.WriteLine("SP_YHiBorderVScroll= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YHiBorderVScroll));
                //Console.WriteLine("SP_YHiRim= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YHiRim));
                //Console.WriteLine("SP_YHiSensor= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YHiSensor));
                //Console.WriteLine("SP_YHiWideBorder= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YHiWideBorder));
                //Console.WriteLine("SP_YLoBorder= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YLoBorder));
                //Console.WriteLine("SP_YLoBorderVScroll= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YLoBorderVScroll));
                //Console.WriteLine("SP_YLoRim= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YLoRim));
                //Console.WriteLine("SP_YLoSensor= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YLoSensor));
                //Console.WriteLine("SP_YLoWideBorder= " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_YLoWideBorder));
                //Console.WriteLine("Click = " + SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_1FingerPressButtonAction));
                //Console.WriteLine("staticY = " + staticy);

                //Console.WriteLine("X= " +SynTP_Pack.GetLongProperty(SynPacketProperty.SP_X));

                //Up and Down Swipe Gestures

                if (SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ButtonState) == LeftMouseButtonClick || SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ButtonState) == VirtualLeftMouseButtonClick)
                    if (isUpActive)
                        isUpActive = false;

                ydelta = SynTP_Pack.GetLongProperty(SynPacketProperty.SP_YDelta);
                y = SynTP_Pack.GetLongProperty(SynPacketProperty.SP_Y);

                if (isValidGesture(SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ExtraFingerState)) && ydelta > 0)
                {
                    if (y >= ActivationUp)
                        executeUp();
                    else
                        staticy += ydelta;
                }

                else if (isValidGesture(SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ExtraFingerState)) && ydelta < 0)
                {
                    if (y <= ActivationDown && -staticy >= minLengthY) {
                        executeDown();
                    }
                    else staticy += ydelta;
                }

                else
                {
                    if (-staticy >= minLengthY)
                    {
                        executeDown();
                    }
                    else if (staticy >= minLengthY)
                        executeUp();
                    staticy = 0;
                }

                //Left and Right Swipe Gestures
                xdelta = SynTP_Pack.GetLongProperty(SynPacketProperty.SP_XDelta);
                x = SynTP_Pack.GetLongProperty(SynPacketProperty.SP_X);

                if (isValidGestureRL(SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ExtraFingerState)) && xdelta > 0)
                {
                    if (x >= ActivationUp && staticx >= minLengthX)
                        executeRight();
                    else
                        staticx += xdelta;
                }

                else if (isValidGestureRL(SynTP_Pack.GetLongProperty(SynPacketProperty.SP_ExtraFingerState)) && xdelta < 0)
                {
                    if (x <= ActivationDown && -staticx >= minLengthX)
                    {
                        executeLeft();
                    }
                    else staticx += xdelta;
                }

                else
                {
                    if (-staticx >= minLengthX)
                    {
                        executeLeft();
                    }
                    else if (staticx >= minLengthX)
                        executeRight();
                    staticx = 0;
                }

                //Console.WriteLine("yswipe Max " + ySwipeMax);
                //Console.WriteLine("yswipemin " + ySwipeMin);
                //if ((x >= SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_XHiBorder) && x <= maxX) && -xdelta >= 10 && (y <= ySwipeMax && y >= ySwipeMin))  Console.WriteLine("true");

                if ((x>= (SynTP_Dev.GetLongProperty(SynDeviceProperty.SP_XHiBorder)) && x<= maxX) && -xdelta >= 10 && (y<=ySwipeMax && y >= ySwipeMin))
                {
                    WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
                    kb.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_A);
                }

            }
            catch (ArgumentException)
            {
                Console.Write(":(");
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
コード例 #25
0
 private static void SimulateKeyStroke(VirtualKeyCode[] keyStrokes, VirtualKeyCode keyCode)
 {
     WindowsInput.InputSimulator iis = new WindowsInput.InputSimulator();
     iis.Keyboard.ModifiedKeyStroke(keyStrokes, keyCode);
 }
コード例 #26
0
 private WindowsInputWrapper()
 {
     _simulator = new WindowsInput.InputSimulator();
     _logger    = LogManager.GetCurrentClassLogger();
     _busy      = new ManualResetEvent(false);
 }
コード例 #27
0
        public MotionResult ActSequenceMotion(IEnumerable <Motion> seqMotion)
        {
            try
            {
                if (null == seqMotion)
                {
                    return(null);
                }

                var InputSimulator = new WindowsInput.InputSimulator();

                foreach (var Motion in seqMotion.WhereNotDefault())
                {
                    var MotionMousePosition   = Motion?.MousePosition;
                    var MotionTextEntry       = Motion?.TextEntry;
                    var mouseLocationOnScreen = MotionMousePosition.HasValue ? WindowHandle.ClientToScreen(MotionMousePosition.Value) + MouseOffsetStatic : null;

                    if (mouseLocationOnScreen.HasValue || (Motion.WindowToForeground ?? false))
                    {
                        EnsureWindowIsForeground();
                    }

                    if (mouseLocationOnScreen.HasValue)
                    {
                        User32.SetCursorPos((int)mouseLocationOnScreen.Value.A, (int)mouseLocationOnScreen.Value.B);

                        Thread.Sleep(MouseEventTimeDistanceMilli);
                    }

                    var mouseSetAction = new[]
                    {
                        Motion?.MouseButtonDown?.Select(button => new KeyValuePair <MouseButtonIdEnum, bool>(button, true)),
                        Motion?.MouseButtonUp?.Select(button => new KeyValuePair <MouseButtonIdEnum, bool>(button, false)),
                    }.ConcatNullable().ToArray();

                    if (0 < mouseSetAction?.Length)
                    {
                        foreach (var mouseAction in mouseSetAction)
                        {
                            mouseActionFromButtonIdAndState?.TryGetValueOrDefault(mouseAction)?.Invoke(InputSimulator.Mouse);
                        }

                        Thread.Sleep(MouseEventTimeDistanceMilli);
                    }

                    Motion?.KeyDown?.ForEach(keyDown =>
                    {
                        EnsureWindowIsForeground();
                        InputSimulator.Keyboard.KeyDown(keyDown);
                        Thread.Sleep(KeyboardEventTimeDistanceMilli);
                    });

                    Motion?.KeyUp?.ForEach(keyUp =>
                    {
                        EnsureWindowIsForeground();
                        InputSimulator.Keyboard.KeyUp(keyUp);
                        Thread.Sleep(KeyboardEventTimeDistanceMilli);
                    });

                    if (0 < MotionTextEntry?.Length)
                    {
                        EnsureWindowIsForeground();
                        InputSimulator.Keyboard.TextEntry(MotionTextEntry);
                    }
                }

                return(new MotionResult(true));
            }
            catch (Exception Exception)
            {
                return(new MotionResult(Exception));
            }
        }
コード例 #28
0
 public static void Scroll(int scrollAmountVertical, int scrollAmountHorizontal)
 {//The amount to scroll in clicks. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user
     WindowsInput.InputSimulator mouseSim = new WindowsInput.InputSimulator();
     mouseSim.Mouse.VerticalScroll(scrollAmountVertical);
     mouseSim.Mouse.HorizontalScroll(scrollAmountHorizontal);
 }
コード例 #29
0
ファイル: WindowMotor.cs プロジェクト: grachevko/Sanderling
		public MotionResult ActSequenceMotion(IEnumerable<Motion> SeqMotion)
		{
			try
			{
				if (null == SeqMotion)
				{
					return null;
				}

				var MousePosition = BotEngine.Windows.Extension.User32GetCursorPos() ?? new Vektor2DInt(0, 0);

				var InputSimulator = new WindowsInput.InputSimulator();

				foreach (var Motion in SeqMotion.WhereNotDefault())
				{
					var MotionMousePosition = Motion?.MousePosition;
					var MotionTextEntry = Motion?.TextEntry;

					if (MotionMousePosition.HasValue || (Motion.WindowToForeground ?? false))
						EnsureWindowIsForeground();

					if (MotionMousePosition.HasValue)
					{
						POINT PositionOnScreen;

						MouseMoveToPointInClientRect(WindowHandle, MotionMousePosition.Value + MouseOffsetStatic, out PositionOnScreen);

						MousePosition = PositionOnScreen.AsVektor2DInt();

						Thread.Sleep(MouseMoveDelay);
					}

					if (0 < Motion?.MouseButtonDown?.Count() || 0 < Motion?.MouseButtonUp?.Count())
					{
						EnsureWindowIsForeground();

						User32MouseEvent(MousePosition, Motion?.MouseButtonDown, Motion?.MouseButtonUp);

						Thread.Sleep(MouseEventDelay);
					}

					Motion?.KeyDown?.ForEach(KeyDown =>
					{
						EnsureWindowIsForeground();
						InputSimulator.Keyboard.KeyDown(KeyDown);
						Thread.Sleep(KeyboardEventTimeDistanceMilli);
					});

					Motion?.KeyUp?.ForEach(KeyUp =>
					{
						EnsureWindowIsForeground();
						InputSimulator.Keyboard.KeyUp(KeyUp);
						Thread.Sleep(KeyboardEventTimeDistanceMilli);
					});

					if (0 < MotionTextEntry?.Length)
					{
						EnsureWindowIsForeground();
						InputSimulator.Keyboard.TextEntry(MotionTextEntry);
					}
				}

				return new MotionResult(true);
			}
			catch (Exception Exception)
			{
				return new MotionResult(Exception);
			}
		}
コード例 #30
0
		public MotionResult ActSequenceMotion(IEnumerable<Motion> SeqMotion)
		{
			try
			{
				if (null == SeqMotion)
				{
					return null;
				}

				var MousePosition = BotEngine.Windows.Extension.User32GetCursorPos() ?? new Vektor2DInt(0, 0);

				var InputSimulator = new WindowsInput.InputSimulator();
				var KeyboardSimulator = new WindowsInput.KeyboardSimulator(InputSimulator);

				foreach (var Motion in SeqMotion)
				{
					var MotionMousePosition = Motion?.MousePosition;

					if (MotionMousePosition.HasValue)
					{
						POINT PositionOnScreen;

						EnsureWindowIsForeground(WindowHandle);

						MouseMoveToPointInClientRect(WindowHandle, MotionMousePosition.Value, out PositionOnScreen);

						MousePosition = PositionOnScreen.AsVektor2DInt();

						Thread.Sleep(MouseMoveDelay);
					}

					if (0 < Motion?.MouseButtonDown?.Count() || 0 < Motion?.MouseButtonUp?.Count())
					{
						EnsureWindowIsForeground(WindowHandle);

						User32MouseEvent(MousePosition, Motion?.MouseButtonDown, Motion?.MouseButtonUp);

						Thread.Sleep(MouseEventDelay);
					}

					Motion?.KeyDown?.ForEachNullable(KeyDown =>
					{
						EnsureWindowIsForeground(WindowHandle);
						InputSimulator.Keyboard.KeyDown(KeyDown);
					});

					Motion?.KeyUp?.ForEachNullable(KeyUp =>
					{
						EnsureWindowIsForeground(WindowHandle);
						InputSimulator.Keyboard.KeyUp(KeyUp);
					});
				}

				return new MotionResult(true);
			}
			catch (Exception Exception)
			{
				return new MotionResult(Exception);
			}
		}
コード例 #31
0
 private InputSimulatorManager()
 {
     InputSimu = new WindowsInput.InputSimulator();
 }
コード例 #32
0
ファイル: Program.cs プロジェクト: dpoznyak/zz.ahk-helpers
 static void Main(string[] args)
 {
     WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
     kb.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.TAB);
     //Console.Read();// Keep console window open
 }
コード例 #33
0
ファイル: Program.cs プロジェクト: Abhiseshan/swipe10
        void executeDown()
        {
            WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
            if (isUpActive)
            {
                isUpActive = false;
                kb.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.TAB);
            }
            else
                kb.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_D);

            staticy = 0;
        }
コード例 #34
0
ファイル: Program.cs プロジェクト: Abhiseshan/swipe10
        void executeLeft()
        {
            List<VirtualKeyCode> Modify = new List<VirtualKeyCode>();
            Modify.Add(VirtualKeyCode.LWIN);
            Modify.Add(VirtualKeyCode.CONTROL);
            WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
            kb.Keyboard.ModifiedKeyStroke(Modify, VirtualKeyCode.LEFT);

            //Console.WriteLine("ELFT");
            //desktop = desktop.GetLeft();
            //if (desktop != null)
                //desktop.Switch();
        }
コード例 #35
0
ファイル: Program.cs プロジェクト: Abhiseshan/swipe10
 void executeRight()
 {
     List<VirtualKeyCode> Modify = new List<VirtualKeyCode>();
     Modify.Add(VirtualKeyCode.LWIN);
     Modify.Add(VirtualKeyCode.CONTROL);
     WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
     kb.Keyboard.ModifiedKeyStroke(Modify, VirtualKeyCode.RIGHT);
     //Console.WriteLine("RIGHT");
 }
コード例 #36
0
ファイル: Bot.cs プロジェクト: viniciusormond/OnceBot
        public BotStepResult Step(
            bool motionEnabled,
            Func <Request, Response> service)
        {
            lock (Lock)
            {
                var StartTime = DateTime.Now;

                Exception Exception     = null;
                string    UIMessageText = null;
                KeyValuePair <UInt32[], int> windowClientRaster            = default(KeyValuePair <UInt32[], int>);
                ImagePatternMatch[]          RasterSetPatternMatch         = null;
                ImagePatternMatch[]          RasterSetPatterMatchTriggered = null;
                IconHandling[] SetIconCandidate = null;

                var ImageSearchDelegate = new Func <KeyValuePair <UInt32[], int>, IEnumerable <ImagePatternMatch> >(raster =>
                                                                                                                    service?.Invoke(new Request
                {
                    ImagePatternMatchSearch = new ImagePatternMatchSearchRequest
                    {
                        Raster = raster,
                    },
                })?.ImagePatternMatchSearch?.SetMatch);

                try
                {
                    var WindowHandle = this.WindowHandle;

                    if (!WindowHandle.HasValue)
                    {
                        throw new ArgumentException("no window selected");
                    }

                    BotEngine.Windows.RECT WindowClientRect;

                    BotEngine.WinApi.User32.GetClientRect(WindowHandle.Value, out WindowClientRect);

                    var WindowClientSize = new Vektor2DInt(WindowClientRect.Width, WindowClientRect.Height);

                    var Motor = new Motor.WindowMotor(WindowHandle.Value);

                    BotEngine.WinApi.User32.SetForegroundWindow(WindowHandle.Value);

                    windowClientRaster = WinApi.Raster32BitFromClientRectFromWindowMitHandleOverDesktop(WindowHandle.Value);

                    if (windowClientRaster.Value < 1)
                    {
                        throw new Exception("failed to take image of window.");
                    }

                    RasterSetPatternMatch =
                        ImageSearchDelegate?.Invoke(windowClientRaster)?.ToArray();

                    var MouseMoveToRest = new Action(() =>
                    {
                        UIMessageText += "move mouse to rest location." + Environment.NewLine;
                        Motor.MouseMoveLinearContinuous(MouseRestLocation + new Vektor2DInt(44, 44), MouseRestLocation);
                    });

                    var subsetMatchWithPatternIdContaining = new Func <string, IEnumerable <ImagePatternMatch> >(idPortion =>
                                                                                                                 RasterSetPatternMatch?.Where(match => match?.SourcePatternId?.RegexMatchSuccessIgnoreCase(Regex.Escape(idPortion)) ?? false));

                    var hourglassMatch =
                        subsetMatchWithPatternIdContaining(PatternIdConfig.Hourglass)?.ToArray();

                    var closeButtonMatch =
                        subsetMatchWithPatternIdContaining("close.button")?.FirstOrDefault();

                    var progressBarMatch =
                        subsetMatchWithPatternIdContaining("progress")?.FirstOrDefault();

                    var clickToCollectMatch =
                        subsetMatchWithPatternIdContaining("collect")?.FirstOrDefault();

                    var IdleIconMatch =
                        subsetMatchWithPatternIdContaining(PatternIdConfig.Idle);

                    SetIconCandidate = new[]
                    {
                        subsetMatchWithPatternIdContaining(PatternIdConfig.Coin),
                        subsetMatchWithPatternIdContaining(PatternIdConfig.WorkshopProductReady),
                        subsetMatchWithPatternIdContaining(PatternIdConfig.Idle),
                    }
                    .ConcatNullable()
                    ?.WhereNotDefault()
                    ?.Select(match => new IconHandling
                    {
                        PatternId = match.SourcePatternId,
                        Location  = match.Area.Center(),
                    })
                    ?.Where(icon =>
                            SecurityMarginThickness < icon.Location.A && Math.Max(SecurityMarginThicknessTop, SecurityMarginThickness) < icon.Location.B &&
                            icon.Location.A + SecurityMarginThickness < WindowClientSize.A && icon.Location.B + SecurityMarginThickness < WindowClientSize.B)
                    ?.ToArray();

                    foreach (var Icon in SetIconCandidate.EmptyIfNull())
                    {
                        var lastVisit =
                            ListIconVisited?.CastToNullable()?.LastOrDefault(visit =>
                                                                             visit.Value.Key.PatternId == Icon.PatternId &&
                                                                             DistanceInBoundProductIconAnim(visit.Value.Key.Location - Icon.Location));

                        Icon.LastVisitAge = (DateTime.Now - lastVisit?.Value)?.TotalSeconds;
                    }

                    var ListToVisit =
                        SetIconCandidate

                        //	only consider icons which were already present in last step to prevent distraction by temporary floating icons triggered by collection.
                        ?.Where(icon =>
                                StepLast?.SetIconCandidate?.Any(lastStepIcon => (lastStepIcon.Location - icon.Location).Length() < 3) ?? false)

                        ?.OrderByDescending(t => t.LastVisitAge ?? int.MaxValue)
                        ?.ThenBy(t => t.Location.B)
                        ?.ToArray();

                    var IconToVisitNext = ListToVisit?.FirstOrDefault();

                    //	production button contains a hourglass icon.
                    //	we want the shortest time and assume that is the one closest to the upper left.
                    var productionPreferredButtonLocation =
                        hourglassMatch
                        ?.OrderBy(match => match.Area.Center().Length())
                        ?.FirstOrDefault();

                    //	Baracks dialog has an hourglass too.
                    var DialogIsProduction = 3 < hourglassMatch?.Length;

                    UIMessageText += "next icon to visit: " +
                                     ((null == IconToVisitNext) ? "null" :
                                      ("'" + IconToVisitNext?.PatternId + "'" + " at " + IconToVisitNext.Location.RenderForUI() + " (last visited " + (((int?)IconToVisitNext.LastVisitAge)?.ToString() ?? "????") + "s ago)"))
                                     + Environment.NewLine;

                    if (motionEnabled)
                    {
                        if (null != closeButtonMatch)
                        {
                            if (null != productionPreferredButtonLocation && DialogIsProduction)
                            {
                                UIMessageText += "click on production start button.";
                                Motor.MouseClickLeft(productionPreferredButtonLocation.Area.Center());
                                goto StepEnd;
                            }

                            UIMessageText += "click on dialog close button.";
                            Motor.MouseClickLeft((closeButtonMatch?.Area.Center()).Value);
                            goto StepEnd;
                        }

                        if (null != progressBarMatch || null != clickToCollectMatch)
                        {
                            UIMessageText += "tooltip detected, move mouse to rest location.";
                            MouseMoveToRest();
                            goto StepEnd;
                        }

                        if (null != IconToVisitNext &&
                            !(IconToVisitNext?.LastVisitAge < VisitDistanceMin))
                        {
                            var BuildingProductIconReadyLocation = IconToVisitNext.Location;

                            var IconIdMessage = "under icon of type " + IconToVisitNext?.PatternId + " at " + BuildingProductIconReadyLocation.RenderForUI();

                            UIMessageText += IconIdMessage + ":" + Environment.NewLine;

                            var mouseDestination = BuildingProductIconReadyLocation + FromProductIconToBuildingOffset;

                            ListIconVisited.Enqueue(new KeyValuePair <IconHandling, DateTime>(IconToVisitNext, DateTime.Now));
                            ListIconVisited.ListeKürzeBegin(400);

                            BotEngine.WinApi.User32.SetForegroundWindow(WindowHandle.Value);

                            if (IconToVisitNext.PatternId == PatternIdConfig.Idle)
                            {
                                UIMessageText += "open dialog at " + mouseDestination.RenderForUI() + "." + Environment.NewLine;

                                Motor.MouseClick(mouseDestination, MouseButtonIdEnum.Left);
                            }
                            else
                            {
                                UIMessageText += "collect at " + mouseDestination.RenderForUI() + "." + Environment.NewLine;

                                var PathStretch = new Vektor2DInt(CollectDragDistance, 0).RotatedByMikro((int)new Random((int)Bib3.Glob.StopwatchZaitMiliSictInt()).Next().SictUmgebrocen(0, 1000) * 1000);

                                var collectLocationDistant = mouseDestination + PathStretch;

                                var middle = (mouseDestination + collectLocationDistant) / 2;

                                var listWaypoint = Extension.ListPointInterpolated(mouseDestination, collectLocationDistant, (int)Extension.RandomInt().SictUmgebrocen(7, 16)).ToArray();

                                listWaypoint =
                                    listWaypoint.Concat(listWaypoint.Reversed()).ToArray();

                                var LocationInScreenFromLocationInWindow = new Func <Vektor2DInt, Vektor2DInt>(windowClient =>
                                {
                                    var PointInScreen = new BotEngine.Windows.POINT {
                                        x = (int)windowClient.A, y = (int)windowClient.B
                                    };

                                    BotEngine.WinApi.User32.ClientToScreen(Motor.WindowHandle, ref PointInScreen);

                                    return(new Vektor2DInt(PointInScreen.x, PointInScreen.y));
                                });

                                var simulator = new WindowsInput.InputSimulator();

                                simulator.Mouse.LeftButtonUp();

                                bool mouseButtonDown = false;

                                foreach (var waypointInWindow in listWaypoint)
                                {
                                    var locationOnScreen = LocationInScreenFromLocationInWindow(waypointInWindow);

                                    Thread.Sleep((int)Extension.RandomInt().SictUmgebrocen(0, 33));
                                    BotEngine.WinApi.User32.SetCursorPos((int)locationOnScreen.A, (int)locationOnScreen.B);

                                    if (!mouseButtonDown)
                                    {
                                        mouseButtonDown = true;
                                        simulator.Mouse.LeftButtonDown();
                                    }
                                }

                                simulator.Mouse.LeftButtonUp();
                                Thread.Sleep(111);
                            }

                            MouseMoveToRest();
                            goto StepEnd;
                        }
                    }

                    StepEnd :;
                }
                catch (Exception tException)
                {
                    Exception = tException;
                }

                var StepResult = new BotStepResult
                {
                    StartTime                     = StartTime,
                    Exception                     = Exception,
                    UIMessageText                 = UIMessageText + " " + Bib3.Glob.SictString(Exception, true),
                    WindowClientRaster            = windowClientRaster,
                    RasterSetPatternMatch         = RasterSetPatternMatch,
                    RasterSetPatterMatchTriggered = RasterSetPatterMatchTriggered,
                    SetIconCandidate              = SetIconCandidate,
                    MotionEnabled                 = motionEnabled,
                    EndTime = DateTime.Now,
                };

                StepLast = StepResult;

                if (motionEnabled)
                {
                    MotionEnabledStepLast = StepResult;
                }

                return(StepResult);
            }
        }
コード例 #37
0
ファイル: Program.cs プロジェクト: Abhiseshan/swipe10
        void executeUp()
        {
            if (!isUpActive) {
                isUpActive = true;
                WindowsInput.InputSimulator kb = new WindowsInput.InputSimulator();
                kb.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.TAB);
            }

            //vdm.GetWindowDesktopId
            //var desktop = VirtualDesktop.FromHwnd();
            //IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;
            //VirtualDesktop desktop = VirtualDesktop.FromId(vdm.GetWindowDesktopId(handle));
            //Console.WriteLine(" " + desktop.Id);
            //desktop.GetRight()?.Switch();
            //desktop = desktop.GetRight();
            //Console.WriteLine(" " + desktop.Id);
            //if (desktop != null)
            //desktop.Switch();
            staticy = 0;
        }
コード例 #38
0
        public void Test2()
        {
            var sim = new WindowsInput.InputSimulator();

            sim.Keyboard.KeyDown(WindowsInput.Native.VirtualKeyCode.VK_Q);
        }
コード例 #39
0
        public MotionResult ActSequenceMotion(IEnumerable <Motion> SeqMotion)
        {
            try
            {
                if (null == SeqMotion)
                {
                    return(null);
                }

                var MousePosition = BotEngine.Windows.Extension.User32GetCursorPos() ?? new Vektor2DInt(0, 0);

                var InputSimulator = new WindowsInput.InputSimulator();

                foreach (var Motion in SeqMotion.WhereNotDefault())
                {
                    var MotionMousePosition = Motion?.MousePosition;
                    var MotionTextEntry     = Motion?.TextEntry;

                    if (MotionMousePosition.HasValue || (Motion.WindowToForeground ?? false))
                    {
                        EnsureWindowIsForeground();
                    }

                    if (MotionMousePosition.HasValue)
                    {
                        POINT PositionOnScreen;

                        MouseMoveToPointInClientRect(WindowHandle, MotionMousePosition.Value + MouseOffsetStatic, out PositionOnScreen);

                        MousePosition = PositionOnScreen.AsVektor2DInt();

                        Thread.Sleep(MouseMoveDelay);
                    }

                    if (0 < Motion?.MouseButtonDown?.Count() || 0 < Motion?.MouseButtonUp?.Count())
                    {
                        EnsureWindowIsForeground();

                        User32MouseEvent(MousePosition, Motion?.MouseButtonDown, Motion?.MouseButtonUp);

                        Thread.Sleep(MouseEventDelay);
                    }

                    Motion?.KeyDown?.ForEach(KeyDown =>
                    {
                        EnsureWindowIsForeground();
                        InputSimulator.Keyboard.KeyDown(KeyDown);
                        Thread.Sleep(KeyboardEventTimeDistanceMilli);
                    });

                    Motion?.KeyUp?.ForEach(KeyUp =>
                    {
                        EnsureWindowIsForeground();
                        InputSimulator.Keyboard.KeyUp(KeyUp);
                        Thread.Sleep(KeyboardEventTimeDistanceMilli);
                    });

                    if (0 < MotionTextEntry?.Length)
                    {
                        EnsureWindowIsForeground();
                        InputSimulator.Keyboard.TextEntry(MotionTextEntry);
                    }
                }

                return(new MotionResult(true));
            }
            catch (Exception Exception)
            {
                return(new MotionResult(Exception));
            }
        }