@@ -57,21 +57,12 @@ protected override void OnInitialized(EventArgs e)
57
57
_thisHandle = new System . Windows . Interop . WindowInteropHelper ( this ) . Handle ;
58
58
_lastWidth = Width ;
59
59
60
- _hook = new TaskPoolGlobalHook ( ) ;
61
-
62
- _hook . MousePressed += OnMousePressed ;
63
- _hook . MouseReleased += OnMouseReleased ;
64
- _hook . MouseMoved += _hook_MouseMoved ;
65
-
66
- Task . Run ( _hook . Run ) ;
60
+ StartHook ( ) ;
67
61
}
68
62
69
63
protected override void OnClosed ( EventArgs e )
70
64
{
71
- _hook . MousePressed -= OnMousePressed ;
72
- _hook . MouseReleased -= OnMouseReleased ;
73
- _hook . MouseMoved -= _hook_MouseMoved ;
74
- _hook . Dispose ( ) ;
65
+ StopHook ( ) ;
75
66
76
67
trayIcon . Dispose ( ) ;
77
68
@@ -318,6 +309,32 @@ private void ApplyWindowMode()
318
309
BeginAnimation ( LeftProperty , animation ) ;
319
310
}
320
311
312
+ private void StartHook ( )
313
+ {
314
+ _hook = new TaskPoolGlobalHook ( ) ;
315
+
316
+ _hook . MousePressed += OnMousePressed ;
317
+ _hook . MouseReleased += OnMouseReleased ;
318
+ _hook . MouseMoved += _hook_MouseMoved ;
319
+
320
+ Task . Run ( _hook . Run ) ;
321
+ }
322
+
323
+ private void StopHook ( )
324
+ {
325
+ _hook . MousePressed -= OnMousePressed ;
326
+ _hook . MouseReleased -= OnMouseReleased ;
327
+ _hook . MouseMoved -= _hook_MouseMoved ;
328
+
329
+ try
330
+ {
331
+ _hook . Dispose ( ) ;
332
+ }
333
+ catch ( HookException )
334
+ {
335
+ }
336
+ }
337
+
321
338
private void _hook_MouseMoved ( object ? sender , MouseHookEventArgs e )
322
339
{
323
340
_mouse . X = e . Data . X ;
@@ -378,6 +395,16 @@ private void MenuItem_Quit_Click(object sender, RoutedEventArgs e)
378
395
{
379
396
Close ( ) ;
380
397
}
398
+
399
+ private void ContextMenu_Closed ( object sender , RoutedEventArgs e )
400
+ {
401
+ StartHook ( ) ;
402
+ }
403
+
404
+ private void ContextMenu_Opened ( object sender , RoutedEventArgs e )
405
+ {
406
+ StopHook ( ) ;
407
+ }
381
408
}
382
409
383
410
public enum WindowMode
0 commit comments