private async void mouseButton_Click(object sender, RoutedEventArgs e) { if (!_mouseHookInstalled) { if (_process == null || _process.HasExited) { if (Environment.Is64BitOperatingSystem && (radio32bit.IsChecked ?? false)) { _process = Process.Start(@"c:\windows\syswow64\notepad.exe"); } else { _process = Process.Start(@"c:\windows\notepad.exe"); } } if (_mouseHook == null) { if (ignoreMove.IsChecked ?? false) { _mouseHook = new MouseHook(_process.Id, MouseMessageTypes.IgnoreMove); } else { _mouseHook = new MouseHook(_process.Id); } ignoreMove.IsEnabled = false; } else { _mouseHook.RemoveAllHandlers(); } _mouseHook.MessageReceived += MouseHook_MessageReceived; _mouseHook.LeftButtonUp += MouseHook_LeftButtonUp; _mouseHook.AddHandler(MouseMessageCode.NCLeftButtonUp, MouseHook_NCLButtonUp); _mouseHook.RemoveHandler(MouseMessageCode.NCLeftButtonUp, MouseHook_NCLButtonUp); mouseButton.Content = "Installing hook..."; await _mouseHook.InstallAsync(); _mouseHookInstalled = true; mouseButton.Content = "Mouse Unhook"; } else { _mouseHook.Uninstall(); _mouseHookInstalled = false; mouseButton.Content = "Mouse Hook"; } }