internal static List <VirtualKeyCodeContainer> ExtractKeyStrokes(string macroText) { List <VirtualKeyCodeContainer> keyStrokes = new List <VirtualKeyCodeContainer>(); try { MatchCollection matches = Regex.Matches(macroText, REGEX_SUB_COMMAND); foreach (var match in matches) { string matchText = match.ToString().Replace("{", "").Replace("}", ""); if (matchText.Length == 1) { char code = matchText.ToUpperInvariant()[0]; keyStrokes.Add(new VirtualKeyCodeContainer((VirtualKeyCode)code)); } else { VirtualKeyCodeContainer stroke = MacroTextToKeyCode(matchText); if (stroke != null) { keyStrokes.Add(stroke); } } } } catch (Exception ex) { Logger.Instance.LogMessage(TracingLevel.ERROR, $"ExtractKeyStrokes Exception: {ex}"); } return(keyStrokes); }
public static void RunHotkey(string hotkey) { Logger.Instance.LogMessage(TracingLevel.INFO, $"Simulating hotkey: {hotkey}"); List <VirtualKeyCodeContainer> keyStrokes = HotkeyHandler.ExtractKeyStrokes(hotkey); VirtualKeyCodeContainer keyCode = keyStrokes.Last(); keyStrokes.Remove(keyCode); if (keyStrokes.Count > 0) { Task.Run(() => SimulateKeyStroke(keyStrokes.Select(ks => ks.KeyCode).ToArray(), keyCode.KeyCode)); } }