コード例 #1
0
ファイル: KeyboardHook.cs プロジェクト: RaptorOne/IronAHK
        bool HasConditions(HotstringDefinition hotstring)
        {
            string history = this.history.ToString();

            if(history.Length == 0)
                return false;

            var compare = (hotstring.EnabledOptions & HotstringDefinition.Options.CaseSensitive) == HotstringDefinition.Options.CaseSensitive ?
                StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase;

            int x = history.Length - hotstring.Sequence.Length - 1;

            if((hotstring.EnabledOptions & HotstringDefinition.Options.AutoTrigger) == HotstringDefinition.Options.AutoTrigger) {
                if(!history.EndsWith(hotstring.Sequence, compare))
                    return false;
            } else {
                if(history.Length < hotstring.Sequence.Length + 1)
                    return false;

                if(hotstring.EndChars.IndexOf(history[history.Length - 1]) == -1)
                    return false;

                if(!history.Substring(x--, hotstring.Sequence.Length).Equals(hotstring.Sequence, compare))
                    return false;
            }

            if((hotstring.EnabledOptions & HotstringDefinition.Options.Nested) != HotstringDefinition.Options.Nested)
                if(x > -1 && char.IsLetterOrDigit(history[x]))
                    return false;

            return true;
        }
コード例 #2
0
ファイル: KeyboardHook.cs プロジェクト: RaptorOne/IronAHK
 public HotstringDefinition Add(HotstringDefinition hotstring)
 {
     hotstrings.Add(hotstring);
     return hotstring;
 }
コード例 #3
0
ファイル: KeyboardHook.cs プロジェクト: RaptorOne/IronAHK
 public void Remove(HotstringDefinition hotstring)
 {
     hotstrings.Remove(hotstring);
 }
コード例 #4
0
ファイル: Keyboard.cs プロジェクト: RaptorOne/IronAHK
        /// <summary>
        /// Creates a hotstring.
        /// </summary>
        /// <param name="Sequence"></param>
        /// <param name="Label"></param>
        /// <param name="Options"></param>
        public static void Hotstring(string Sequence, string Label, string Options)
        {
            InitKeyboardHook();

            GenericFunction proc;

            try
            {
                var method = FindLocalMethod(Label);
                if (method == null)
                    throw new ArgumentNullException();
                proc = (GenericFunction)Delegate.CreateDelegate(typeof(GenericFunction), method);
            }
            catch (Exception)
            {
                ErrorLevel = 1;
                throw new ArgumentException();
            }

            var options = HotstringDefinition.ParseOptions(Options);
            var key = new HotstringDefinition(Sequence, proc) { Name = Sequence, Enabled = true, EnabledOptions = options };
            hotstrings.Add(Sequence, key);
            keyboardHook.Add(key);
        }