Пример #1
0
 public void Dispose()
 {
     for (int i = _currentId; i > 0; i--)
     {
         Win32Helper.UnregisterHotKey(_window.Handle, i);
     }
     _window.Dispose();
 }
Пример #2
0
        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.");
                }
            }
        }