Пример #1
0
 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));
 }
Пример #2
0
        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();
            }
        }
Пример #3
0
 public static void Stop()
 {
     MouseHook.UnhookWindowsHookEx(_hookID);
 }
Пример #4
0
 public static void Start()
 {
     _hookID = MouseHook.SetHook(Proc);
 }
Пример #5
0
 private void CloseTrayNotifierContextMenu()
 {
     _trayNotifierContextMenu.IsOpen = false;
     MouseHook.Stop();
 }
Пример #6
0
 private void OpenTrayNotifierContextMenu()
 {
     _trayNotifierContextMenu.IsOpen = true;
     MouseHook.Start();
 }