private void SimulateExtendedMacro(VirtualKeyCodeContainer keyCode) { Logger.Instance.LogMessage(TracingLevel.INFO, $"{this.GetType()} SimulateExtendedMacro"); while (keyPressed) { ExtendedMacroHandler.HandleExtendedMacro(iis, keyCode); Thread.Sleep(30); } }
private static VirtualKeyCodeContainer MacroTextToKeyCode(string macroText) { try { string text = ConvertSimilarMacroCommands(macroText); if (ExtendedMacroHandler.IsExtendedMacro(text, out string macroCommand, out string extendedData)) { return(new VirtualKeyCodeContainer(VirtualKeyCode.ZOOM, macroCommand, extendedData)); } VirtualKeyCode keyCode = (VirtualKeyCode)Enum.Parse(typeof(VirtualKeyCode), text, true); return(new VirtualKeyCodeContainer(keyCode)); } catch (Exception ex) { Logger.Instance.LogMessage(TracingLevel.ERROR, $"MacroTextToInt Exception: {ex}"); return(null); } }
protected void HandleMacro(string macro) { List <VirtualKeyCodeContainer> keyStrokes = CommandTools.ExtractKeyStrokes(macro); // Actually initiate the keystrokes if (keyStrokes.Count > 0) { InputSimulator iis = new InputSimulator(); VirtualKeyCodeContainer keyCode = keyStrokes.Last(); keyStrokes.Remove(keyCode); if (keyStrokes.Count > 0) { if (settings.KeydownDelay) { Logger.Instance.LogMessage(TracingLevel.INFO, $"{this.GetType()} DelayedModifiedKeyStroke"); iis.Keyboard.DelayedModifiedKeyStroke(keyStrokes.Select(ks => ks.KeyCode).ToArray(), new VirtualKeyCode[] { keyCode.KeyCode }, settings.Delay); } else { Logger.Instance.LogMessage(TracingLevel.INFO, $"{this.GetType()} ModifiedKeyStroke"); iis.Keyboard.ModifiedKeyStroke(keyStrokes.Select(ks => ks.KeyCode).ToArray(), keyCode.KeyCode); } } else // Single Keycode { if (keyCode.IsExtended) { Logger.Instance.LogMessage(TracingLevel.INFO, $"{this.GetType()} HandleExtendedMacro"); ExtendedMacroHandler.HandleExtendedMacro(iis, keyCode); } else // Normal single keycode { if (!MouseHandler.HandleMouseMacro(iis, keyCode.KeyCode)) { Logger.Instance.LogMessage(TracingLevel.INFO, $"{this.GetType()} KeyPress"); iis.Keyboard.KeyPress(keyCode.KeyCode); } } } } }