Exemplo n.º 1
0
        private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                if (wParam == (IntPtr)WM_MOUSEMOVE || wParam == (IntPtr)WM_NCMOUSEMOVE)
                {
                    int x = Marshal.ReadInt32(lParam);
                    int y = Marshal.ReadInt32(lParam, 4);
                    if (_onMouseMoved != null)
                    {
                        _onMouseMoved.Raise(this, new MouseMovedArgs(new Vector2(x, y)));
                    }
                }
                else
                {
                    MOUSEACTION action = wParam == (IntPtr)WM_LBUTTONCLICK || wParam == (IntPtr)WM_MBUTTONCLICK || wParam == (IntPtr)WM_RBUTTONCLICK ? MOUSEACTION.CLICK :
                                         (wParam == (IntPtr)WM_LBUTTONDOWN || wParam == (IntPtr)WM_MBUTTONDOWN || wParam == (IntPtr)WM_RBUTTONDOWN ? MOUSEACTION.DOWN :
                                          (wParam == (IntPtr)WM_LBUTTONUP || wParam == (IntPtr)WM_MBUTTONUP || wParam == (IntPtr)WM_RBUTTONUP ? MOUSEACTION.UP : MOUSEACTION.NONE));


                    MOUSEBUTTON button = wParam == (IntPtr)WM_LBUTTONCLICK || wParam == (IntPtr)WM_LBUTTONDOWN || wParam == (IntPtr)WM_LBUTTONUP ? MOUSEBUTTON.LEFT :
                                         (wParam == (IntPtr)WM_MBUTTONCLICK || wParam == (IntPtr)WM_MBUTTONDOWN || wParam == (IntPtr)WM_MBUTTONUP ? MOUSEBUTTON.MIDDLE :
                                          (wParam == (IntPtr)WM_RBUTTONCLICK || wParam == (IntPtr)WM_RBUTTONDOWN || wParam == (IntPtr)WM_RBUTTONUP ? MOUSEBUTTON.RIGHT : MOUSEBUTTON.NONE));

                    if (action != MOUSEACTION.NONE && button != MOUSEBUTTON.NONE)
                    {
                        if (_onMouseClicked != null)
                        {
                            _onMouseClicked.Raise(this, new MouseClickedArgs(button, action));
                        }
                    }
                }
            }

            return(CallNextHookEx(_hookID, nCode, wParam, lParam));
        }
Exemplo n.º 2
0
 public MouseClickedArgs(MOUSEBUTTON b, MOUSEACTION a)
 {
     click = new MouseClick(b, a);
 }
Exemplo n.º 3
0
 public MouseClick(MOUSEBUTTON b, MOUSEACTION a)
 {
     button = b;
     action = a;
 }