private static IntPtr HookCallback( int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam) { MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT)); MouseHook.MouseAction(null, EventArgs.Empty); } return(MouseHook.CallNextHookEx(_hookID, nCode, wParam, lParam)); }
private void MouseHook_MouseAction(object sender, EventArgs e) { if (!_trayNotifierContextMenu.IsOpen) { MouseHook.Stop(); return; } var mousePosition = Mouse.GetPosition(_trayNotifierContextMenu); if (mousePosition.X <= 0 || mousePosition.Y <= 0 || mousePosition.X >= _trayNotifierContextMenu.RenderSize.Width || mousePosition.Y >= _trayNotifierContextMenu.RenderSize.Height) { this.CloseTrayNotifierContextMenu(); } }
public static void Stop() { MouseHook.UnhookWindowsHookEx(_hookID); }
public static void Start() { _hookID = MouseHook.SetHook(Proc); }
private void CloseTrayNotifierContextMenu() { _trayNotifierContextMenu.IsOpen = false; MouseHook.Stop(); }
private void OpenTrayNotifierContextMenu() { _trayNotifierContextMenu.IsOpen = true; MouseHook.Start(); }