public MainWindow() { InitializeComponent(); //Ctrl+Shift+Xで画面を表示。 hotKey = new HotKeyHelper(this); hotKey.Register(ModifierKeys.Control | ModifierKeys.Shift, Key.X, (a, b) => { Show(); }); //表示された時にフォーカスを合わせる。 Activated += OnActivate; Deactivated += OnDeactivate; //ViewModelの設定 DataContext = vm; if (Properties.Settings.Default.Timer != 0) { //一定間隔ごとに画面を表示し、今なにしてるかを聞く。 timer = new Timer(Properties.Settings.Default.Timer * 1000); timer.Elapsed += (a, b) => { //別スレッドなので。 Dispatcher.Invoke(new Action(() => { Show(); })); }; timer.Start(); } }
private void AssociatedObject_Loaded(object sender, RoutedEventArgs e) { _hotkey = new HotKeyHelper(AssociatedObject); _hotkey.Register( HotKey.Modifiers, HotKey.Key, (_, __) => { if (AssociatedObject.WindowState == WindowState.Normal) { //AssociatedObject.Activate(); } else { AssociatedObject.WindowState = WindowState.Normal; AssociatedObject.Activate(); } }); }
/// <summary> /// Initializeで指定したハンドラを起動するグローバルホットキーを上書き登録する /// </summary> /// <param name="modifier"></param> /// <param name="key"></param> /// <returns>正しく登録できればTrue</returns> public static bool RegisterHotKey(ModifierKeys modifier, Key key) { if (modifier == ModifierKeys.None) { return(false); } if (_handler == null) { return(false); } _hotkey.UnregisterAll(); _hotkey.Register(modifier, key, _handler); // 設定したModifierとKeyを記憶 Properties.Settings.Default.EnumModifierKeys = (int)modifier; Properties.Settings.Default.EnumKey = (int)key; Properties.Settings.Default.Save(); return(true); }
private static void HotKeyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (_hotkey == null) { return; } var obj = d as HotKeyBehavior; _hotkey.UnregisterAll(); _hotkey.Register( obj.HotKey.Modifiers, obj.HotKey.Key, (_, __) => { if (obj.AssociatedObject.WindowState == WindowState.Normal) { //AssociatedObject.Activate(); } else { obj.AssociatedObject.WindowState = WindowState.Normal; obj.AssociatedObject.Activate(); } }); }