Пример #1
0
        private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && (wParam == (IntPtr)WM_KEYDOWN || wParam == (IntPtr)WM_SYSKEYDOWN))
            {
                int vkCode = Marshal.ReadInt32(lParam);

                KeyPair tmpPair = new KeyPair();
                foreach (Keys vKey in pressedKeys)
                {
                    Key key = KeyInterop.KeyFromVirtualKey((int)vKey);
                    if (Enum.IsDefined(typeof(Key), key) && !Keyboard.IsKeyDown(key))
                    {
                        tmpPair.Add(vKey);
                    }
                }
                foreach (Keys vKey in tmpPair)
                {
                    pressedKeys.Remove(vKey);
                }

                if (!pressedKeys.Contains((Keys)vkCode) &&
                    (Keys)vkCode != Keys.KanaMode && (Keys)vkCode != Keys.HangulMode && (Keys)vkCode != Keys.JunjaMode &&
                    (Keys)vkCode != Keys.FinalMode && (Keys)vkCode != Keys.HanjaMode)
                {
                    pressedKeys.Add((Keys)vkCode);
                }
                findAndCall(pressedKeys);
            }
            else if (nCode >= 0 && (wParam == (IntPtr)WM_KEYUP || wParam == (IntPtr)WM_SYSKEYUP))
            {
                int vkCode = Marshal.ReadInt32(lParam);
                pressedKeys.Remove((Keys)vkCode);
            }
            return(CallNextHookEx(_hookID, nCode, wParam, lParam));
        }
Пример #2
0
        public static void parseHotKeys()
        {
            hotKeys = new HotKeyDict();
            JArray keys_arr = JArray.Parse(Properties.Settings.Default.HotKeys);

            foreach (JObject obj in keys_arr.Children <JObject>())
            {
                KeyPair key_pairs     = new KeyPair();
                JArray  key_pairs_tmp = (JArray)obj["key_pairs"];
                foreach (int key in key_pairs_tmp)
                {
                    key_pairs.Add((Keys)key);
                }
                ConfigClass.CommandType _type;
                if (!Enum.TryParse(obj["type"].ToString(), out _type))
                {
                    continue;
                }
                hotKeys.Add(key_pairs.GetHashCode(), new ConfigClass(obj["name"].ToString(), key_pairs, _type
                                                                     , obj["exe_file"].ToString(), obj["exe_arg"].ToString(), (Keys)((int)obj["target_key"]), obj["cmd_line"].ToString()));
            }
        }