/// <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; }
/// <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; }
/// <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); }
/// <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); }
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); }
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); } }
/// <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); } } }
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); }
/// <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)); }
/// <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); }
/// <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; }
/// <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); }
/// <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; } }