/// <summary> /// 注册热键 /// </summary> /// <param name="control"></param> /// <param name="key"></param> public void Register(ModifierKeys control, Key key) { try { Unregister(); ControlKey = (uint)control; Key = (uint)KeyInterop.VirtualKeyFromKey(key); KeyID = (int)ControlKey + (int)Key * 10; if (KeyIDList.ContainsKey(KeyID)) { throw new NotImplementedException(TextResource.Hotkey_Is_Already_Registered); } //注册热键 if (!Win32.HotKey.RegisterHotKey(Handle, KeyID, ControlKey, Key)) { throw new NotImplementedException(TextResource.Registration_HotKey_Failure); } KeyIDList.Add(KeyID, this); } catch (Exception) { throw new NotImplementedException(TextResource.Registration_HotKey_Failure); } }
/// <summary> /// 解除热键 /// </summary> /// <param name="control"></param> /// <param name="key"></param> public void Unregister() { if (KeyID > 0) { Win32.HotKey.UnregisterHotKey(this.Handle, this.KeyID); } KeyIDList.Remove(KeyID); KeyID = 0; }
/// <summary> /// 解除全部热键 /// </summary> public static void UnregisterAll() { foreach (var item in KeyIDList) { Win32.HotKey.UnregisterHotKey(item.Value.Handle, item.Value.KeyID); item.Value.KeyID = 0; } KeyIDList.Clear(); }