Exemple #1
0
        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));
            }
        }