Example #1
0
 /// <summary>
 /// Creates a new HotKey object.
 /// </summary>
 /// <param name="key">Key.</param>
 /// <param name="modifiers">Key modifiers.</param>
 /// <param name="id">Hotkey ID.</param>
 /// <param name="handler">Hotkey event handler.</param>
 public HotKey(Keys key, HotKeyModifier modifiers, int id, HotKeyEventHandler handler)
 {
     m_id       = id;
     m_modifier = modifiers;
     m_key      = key;
     m_handler  = handler;
 }
Example #2
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="virtualKey">按键</param>
 /// <param name="flags">按键标志</param>
 /// <param name="hEvent">热键事件</param>
 internal HotkeyHelper(uint virtualKey, HotkeyFlags flags, HotKeyEventHandler hEvent)
 {
     Id           = WindowsApi.GlobalAddAtom(Guid.NewGuid().ToString());
     VirtualKey   = virtualKey;
     Flags        = flags;
     HotkeyActive = hEvent;
 }
Example #3
0
        /// <summary>
        /// 添加或替换热键
        /// </summary>
        /// <param name="name">热键Name</param>
        /// <param name="keys">用户按键</param>
        /// <param name="noRepeat">是否不能重复</param>
        /// <param name="handler">热键事件</param>
        public void AddOrReplace(string name, Keys keys, bool noRepeat, HotKeyEventHandler handler)
        {
            var flags = GetFlags(keys, noRepeat);
            var vk    = unchecked ((uint)(keys & ~Keys.Modifiers));

            AddOrReplace(name, vk, flags, handler);
        }
Example #4
0
        /// <summary>
        /// Registers a new hotkey.
        /// </summary>
        /// <param name="key">Key.</param>
        /// <param name="modifier">Key modifiers.</param>
        /// <param name="id">Hotkey ID.</param>
        /// <param name="handler">Hotkey event handler.</param>
        /// <returns>True if hotkey was registered, otherwise false.</returns>
        public bool Register(Keys key, HotKeyModifier modifier, int id, HotKeyEventHandler handler)
        {
            // attempt to register the hotkey.
            bool result = RegisterHotKey(m_ctrl.Handle, id, (int)modifier, (int)key);

            // add the hotkey to the collection.
            if (result)
            {
                m_keys.Add(new HotKey(key, modifier, id, handler));
            }

            return(result);
        }
Example #5
0
 protected override void WndProc(ref Message m)
 {
     if (htHotKey != null && m.Msg == WM_HOTKEY)
     {
         int htkey = m.WParam.ToInt32();
         HotKeyEventHandler HotKeyPressed = (HotKeyEventHandler)htHotKey[htkey];
         if (HotKeyPressed != null)
         {
             HotKeyPressed((KeyEventArgs)htHotKey[ARGS_PRE + htkey]);
         }
     }
     base.WndProc(ref m);
 }
Example #6
0
        public bool Register(ModifierKeys modifierKey, Keys key, HotKeyEventHandler hotKeyEventHandler)
        {
            ushort id = GlobalAtom.Add(this.GetHotKeyName(modifierKey, key));

            if (HotKeyManager.RegisterHotKey(this.Owner.Handle, id, (uint)modifierKey, (uint)key))
            {
                this.HotKeyTable.Add(id, hotKeyEventHandler);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #7
0
        /// <summary>
        /// 添加或替换热键
        /// </summary>
        /// <param name="name">热键Name</param>
        /// <param name="virtualKey">按键</param>
        /// <param name="flags">按键标志</param>
        /// <param name="HotKeyActive">热键事件</param>
        internal void AddOrReplace(string name, uint virtualKey, HotkeyFlags flags, HotKeyEventHandler HotKeyActive)
        {
            var hotkeyHelper = new HotkeyHelper(virtualKey, flags, HotKeyActive);

            lock (_mdichotkeys)
            {
                Remove(name);
                _mdichotkeys.Add(name, hotkeyHelper);
                _mdichotkeyNames.Add(hotkeyHelper.Id, name);

                if (_hwnd != IntPtr.Zero)
                {
                    hotkeyHelper.Register(_hwnd, name);
                }
            }
        }
Example #8
0
        public bool RegisterHotkey(Keys keys, HotKeyEventHandler ehandler)
        {
            if (htHotKey == null)
            {
                htHotKey = new Hashtable();
            }

            KeyEventArgs keye  = new KeyEventArgs(keys);
            int          htkey = int.Parse(keye.Modifiers.GetHashCode().ToString() + keye.KeyCode.GetHashCode().ToString());

            if (htHotKey.ContainsKey(htkey))
            {
                //have registerd this hotkey
                return(false);
            }

            int keyModifiers = 0;

            if (keye.Alt)
            {
                keyModifiers += (int)Modifiers.MOD_ALT;
            }
            if (keye.Control)
            {
                keyModifiers += (int)Modifiers.MOD_CONTROL;
            }
            if (keye.Shift)
            {
                keyModifiers += (int)Modifiers.MOD_SHIFT;
            }
            if ((keye.Modifiers & Keys.LWin) == Keys.LWin || (keye.Modifiers & Keys.RWin) == Keys.RWin)
            {
                keyModifiers += (int)Modifiers.MOD_WIN;
            }

            bool isOK = RegisterHotKey(this.Handle, htkey, keyModifiers, (int)keye.KeyCode);

            if (isOK)
            {
                htHotKey[htkey]            = ehandler;
                htHotKey[ARGS_PRE + htkey] = keye;
            }
            return(isOK);
        }
        public static HotkeyHandler Create(Keys key, int modifiers, HotKeyEventHandler eventHandler)
        {
            HotkeyHandler handler = new HotkeyHandler();

            try
            {
                handler._hookID = GlobalAddAtom(Thread.CurrentThread.ManagedThreadId.ToString("X8") + handler.Name);
                RegisterHotKey(handler.Handle, handler._hookID, modifiers, (int)key);
            }
            catch
            {
                if (handler._hookID != 0)
                {
                    GlobalDeleteAtom(handler._hookID);
                }
                return(null);
            }
            handler.OnHotKeyEvent += eventHandler;
            return(handler);
        }
Example #10
0
 /// <summary>
 /// 注册
 /// </summary>
 /// <param name="key">键</param>
 /// <param name="hotKeyEventHandler">热键事件委托</param>
 /// <returns></returns>
 public bool Register(Keys key, HotKeyEventHandler hotKeyEventHandler)
 {
     return(this.Register(Enumeration.ModifierKeys.None, key, hotKeyEventHandler));
 }
Example #11
0
 /// <summary>
 /// 添加或替换热键
 /// </summary>
 /// <param name="name">热键Name</param>
 /// <param name="keys">用户按键</param>
 /// <param name="handler">热键事件</param>
 public void AddOrReplace(string name, Keys keys, HotKeyEventHandler handler)
 {
     AddOrReplace(name, keys, false, handler);
 }
Example #12
0
        /// <summary>
        /// Registers a new hotkey.
        /// </summary>
        /// <param name="key">Key.</param>
        /// <param name="modifier">Key modifiers.</param>
        /// <param name="id">Hotkey ID.</param>
        /// <param name="handler">Hotkey event handler.</param>
        /// <returns>True if hotkey was registered, otherwise false.</returns>
        public bool Register(Keys key, HotKeyModifier modifier, int id, HotKeyEventHandler handler)
        {
            // attempt to register the hotkey.
            bool result = RegisterHotKey(m_ctrl.Handle, id, (int)modifier, (int)key);

            // add the hotkey to the collection.
            if (result) m_keys.Add(new HotKey(key, modifier, id, handler));

            return result;
        }
Example #13
0
 /// <summary>
 /// Creates a new HotKey object.
 /// </summary>
 /// <param name="key">Key.</param>
 /// <param name="modifiers">Key modifiers.</param>
 /// <param name="id">Hotkey ID.</param>
 /// <param name="handler">Hotkey event handler.</param>
 public HotKey(Keys key, HotKeyModifier modifiers, int id, HotKeyEventHandler handler)
 {
     m_id = id;
     m_modifier = modifiers;
     m_key = key;
     m_handler = handler;
 }
Example #14
0
 /// <summary>
 /// 注册
 /// </summary>
 /// <param name="key">键</param>
 /// <param name="hotKeyEventHandler">热键事件委托</param>
 /// <returns></returns>
 public bool Register(Keys key, HotKeyEventHandler hotKeyEventHandler)
 {
     return this.Register(Enumeration.ModifierKeys.None, key, hotKeyEventHandler);
 }
Example #15
0
        /// <summary>
        /// 注册
        /// </summary>
        /// <param name="modifierKey">组合键</param>
        /// <param name="key">键</param>
        /// <param name="hotKeyEventHandler">热键事件委托</param>
        /// <returns></returns>
        public bool Register(Enumeration.ModifierKeys modifierKey, Keys key, HotKeyEventHandler hotKeyEventHandler)
        {
            //热键ID
            ushort id = GlobalAtom.Add(this.GetHotKeyName(modifierKey, key));

            //注册
            if (HotKeyManager.RegisterHotKey(this.Owner.Handle, id, (uint)modifierKey, (uint)key))
            {
                //保存到热键表中
                this.HotKeyTable.Add(id, hotKeyEventHandler);
                return true;
            }
            else
            {
                return false;
            }
        }