示例#1
0
 public void Register(Hotkey key)
 {
     if (handle == IntPtr.Zero)
         throw new InvalidOperationException("You can't register hotkeys until your Window is loaded.");
     if (NativeMethods.RegisterHotKey(handle, ++id, key.modifiers.ModifierKeys, key.key)) {
         key.id = id;
         hotkeys.Add(id, key);
         ObservableHotkeys.Add(key);
     }
     else Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
 }
示例#2
0
 public void Unregister(Hotkey key)
 {
     int index = IndexOf(key);
     if (index > 0) {
         if (NativeMethods.UnregisterHotKey(handle, index)) {
             hotkeys.Remove(index);
             ObservableHotkeys.Remove(key);
         }
         else Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error());
     }
 }
示例#3
0
        private int IndexOf(Hotkey item)
        {
            if (item.id > 0 && hotkeys.ContainsKey(item.id))
                return item.id;
            if (hotkeys.ContainsValue(item)) {
                foreach (var k in hotkeys) {
                    if (item.Equals(k.Value)) {
                        item.id = k.Value.id;
                        return item.id;
                    }
                }
            }

            throw new ArgumentOutOfRangeException(string.Format("The hotkey \"{0}\" is not in this hotkey manager.", item));
        }
示例#4
0
 public Hotkeys(Hotkey displayHotKey)
     : this()
 {
     DisplayHotKey = displayHotKey;
 }