Пример #1
0
        private void TryOnInputDesktop(Action inputAction)
        {
            InputActions.Enqueue(() =>
            {
                if (!Win32Interop.SwitchToInputDesktop())
                {
                    if (IsInputBlocked)
                    {
                        BlockInput(false);
                    }

                    Task.Run(() =>
                    {
                        Win32Interop.SwitchToInputDesktop();
                        inputAction();
                    }).Wait();

                    if (IsInputBlocked)
                    {
                        BlockInput(true);
                    }
                }
                else
                {
                    inputAction();
                }
            });
        }
Пример #2
0
 public void ToggleBlockInput(bool toggleOn)
 {
     InputActions.Enqueue(() =>
     {
         var result = BlockInput(toggleOn);
         Logger.Write($"Result of ToggleBlockInput set to {toggleOn}: {result}");
     });
 }
        private void InternalListen()
        {
            while (running)
            {
                var lastKey = Console.ReadKey(true).Key;

                if (!Active)
                {
                    continue;
                }

                switch (lastKey)
                {
                case ConsoleKey.UpArrow:
                case ConsoleKey.W:
                    InputActions.Enqueue(new InputAction(InputActionType.Up));
                    break;

                case ConsoleKey.DownArrow:
                case ConsoleKey.S:
                    InputActions.Enqueue(new InputAction(InputActionType.Down));
                    break;

                case ConsoleKey.LeftArrow:
                case ConsoleKey.A:
                    InputActions.Enqueue(new InputAction(InputActionType.Left));
                    break;

                case ConsoleKey.RightArrow:
                case ConsoleKey.D:
                    InputActions.Enqueue(new InputAction(InputActionType.Right));
                    break;

                case ConsoleKey.NumPad0:
                case ConsoleKey.Q:
                    InputActions.Enqueue(new InputAction(InputActionType.StartAction));
                    break;

                case ConsoleKey.R:
                    InputActions.Enqueue(new InputAction(InputActionType.RoundButton));
                    break;

                case ConsoleKey.D1:
                    InputActions.Enqueue(new InputAction(InputActionType.RoundActionButton));
                    break;

                case ConsoleKey.Escape:
                    break;

                default:
                    break;
                }
            }
        }
Пример #4
0
        private void TryOnInputDesktop(Action inputAction)
        {
            if (InputActionsTask.Status != TaskStatus.Running)
            {
                StartInputActionTask();
            }

            InputActions.Enqueue(() =>
            {
                if (!Win32Interop.SwitchToInputDesktop())
                {
                    Logger.Write("Switch failed.  Last Error: " + Marshal.GetLastWin32Error().ToString());
                }
                inputAction();
            });
        }