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(); } }); }
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; } } }
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(); }); }