From a269739949b2103ffa9f6839afccae594464c88b Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Fri, 24 May 2019 00:27:40 +0800 Subject: [PATCH] completed the branch --- .../HandyControlDemo_Shared/MainWindow.xaml | 4 +- .../ViewModel/Main/MainViewModel.cs | 4 +- .../Tools/GlobalShortcut.cs | 41 +++---------------- .../Tools/Hook/KeyboardHook.cs | 14 ++----- 4 files changed, 14 insertions(+), 49 deletions(-) diff --git a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml index 51e33d9b..cde47eb6 100644 --- a/src/Shared/HandyControlDemo_Shared/MainWindow.xaml +++ b/src/Shared/HandyControlDemo_Shared/MainWindow.xaml @@ -24,8 +24,8 @@ d:DesignHeight="800" d:DesignWidth="1400"> - - + + diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs index 6382450c..5b3c1691 100644 --- a/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs +++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Main/MainViewModel.cs @@ -102,8 +102,8 @@ namespace HandyControlDemo.ViewModel public RelayCommand GlobalShortcutInfoCmd => new Lazy(() => new RelayCommand(() => Growl.Info("Global Shortcut Info"))).Value; - public RelayCommand GlobalShortcutErrorCmd => new Lazy(() => - new RelayCommand(() => Growl.Info("Global Shortcut Error"))).Value; + public RelayCommand GlobalShortcutWarningCmd => new Lazy(() => + new RelayCommand(() => Growl.Warning("Global Shortcut Warning"))).Value; #endregion diff --git a/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs b/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs index 2c51ef61..ce248ba5 100644 --- a/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs +++ b/src/Shared/HandyControl_Shared/Tools/GlobalShortcut.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Windows; using System.Windows.Input; using HandyControl.Data; @@ -8,8 +7,6 @@ namespace HandyControl.Tools { public class GlobalShortcut { - private static ModifierKeys ModifierKeys; - private static readonly Dictionary CommandDic = new Dictionary(); static GlobalShortcut() @@ -21,16 +18,11 @@ namespace HandyControl.Tools private static void HitTest(Key key) { - Console.WriteLine(key.ToString()); - if (IsModifierKey(key)) - { - ModifierKeys |= GetModifierKey(key); - } - else - { - var keyStr = ModifierKeys != ModifierKeys.None ? $"{ModifierKeys.ToString()}, {key.ToString()}" : key.ToString(); - ExecuteCommand(keyStr); - } + if (IsModifierKey(key)) return; + + var modifierKeys = Keyboard.Modifiers; + var keyStr = modifierKeys != ModifierKeys.None ? $"{modifierKeys.ToString()}, {key.ToString()}" : key.ToString(); + ExecuteCommand(keyStr); } private static void ExecuteCommand(string key) @@ -47,27 +39,6 @@ namespace HandyControl.Tools } } - private static ModifierKeys GetModifierKey(Key key) - { - switch (key) - { - case Key.LeftCtrl: - case Key.RightCtrl: - return ModifierKeys.Control; - case Key.LeftAlt: - case Key.RightAlt: - return ModifierKeys.Alt; - case Key.LeftShift: - case Key.RightShift: - return ModifierKeys.Shift; - case Key.LWin: - case Key.RWin: - return ModifierKeys.Windows; - default: - return ModifierKeys.None; - } - } - private static bool IsModifierKey(Key key) { return key == Key.LeftCtrl || key == Key.LeftAlt || key == Key.LeftShift || key == Key.LWin || diff --git a/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs b/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs index 9f171d48..32bb8dcf 100644 --- a/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs +++ b/src/Shared/HandyControl_Shared/Tools/Hook/KeyboardHook.cs @@ -76,20 +76,14 @@ namespace HandyControl.Tools else if (wParam == KeyUpIntPtr) { var virtualKey = Marshal.ReadInt32(lParam); - if (VirtualKey != virtualKey) - { - VirtualKey = virtualKey; - KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, false)); - } + VirtualKey = -1; + KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, false)); } else if (wParam == SyskeyUpIntPtr) { var virtualKey = Marshal.ReadInt32(lParam); - if (VirtualKey != virtualKey) - { - VirtualKey = virtualKey; - KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, true)); - } + VirtualKey = -1; + KeyUp?.Invoke(null, new KeyboardHookEventArgs(virtualKey, true)); } } return UnsafeNativeMethods.CallNextHookEx(HookId, nCode, wParam, lParam);