public void Dispose() { for (int i = _currentId; i > 0; i--) { Win32Helper.UnregisterHotKey(_window.Handle, i); } _window.Dispose(); }
public void SetKey(String key) { if (oldKey == null || String.Compare(oldKey, key, true) != 0) { // remove previous if (oldKey != null) { for (int i = _currentId; i > 0; i--) { Win32Helper.UnregisterHotKey(_window.Handle, i); } } oldKey = key; ModifierKeys modifier = 0; Keys keys = 0; // parse String[] t = key.ToLower().Split('+'); foreach (var v in t) { bool mod = false; switch (v) { case "alt": modifier |= ModifierKeys.Alt; mod = true; break; case "ctrl": modifier |= ModifierKeys.Control; mod = true; break; case "shift": modifier |= ModifierKeys.Shift; mod = true; break; case "win": modifier |= ModifierKeys.Win; mod = true; break; } if (!mod) { Enum.TryParse(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(v), out keys); } } // register keys _currentId = _currentId + 1; if (!Win32Helper.RegisterHotKey(_window.Handle, _currentId, (uint)modifier, (uint)keys)) { throw new InvalidOperationException("Couldn't register the hotkey."); } } }