示例#1
0
 public void UnHook()
 {
     MouseWin32Api.UnhookWindowsHookEx(hHook);
 }
示例#2
0
        private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            MouseWin32Api.MouseHookStruct MyMouseHookStruct = (MouseWin32Api.MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseWin32Api.MouseHookStruct));
            if (nCode < 0)
            {
                return(MouseWin32Api.CallNextHookEx(hHook, nCode, wParam, lParam));
            }
            else
            {
                MouseButtons button     = MouseButtons.None;
                int          clickCount = 0;
                switch ((Int32)wParam)
                {
                case WM_LBUTTONDOWN:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    MouseDownEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_RBUTTONDOWN:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    MouseDownEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_MBUTTONDOWN:
                    button     = MouseButtons.Middle;
                    clickCount = 1;
                    MouseDownEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_LBUTTONUP:
                    button     = MouseButtons.Left;
                    clickCount = 1;
                    MouseUpEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_RBUTTONUP:
                    button     = MouseButtons.Right;
                    clickCount = 1;
                    MouseUpEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_MBUTTONUP:
                    button     = MouseButtons.Middle;
                    clickCount = 1;
                    MouseUpEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_X_BOTTON1DOWN:
                    button     = MouseButtons.XButton1;
                    clickCount = 1;
                    MouseDownEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;

                case WM_X_BOTTON1UP:
                    button     = MouseButtons.XButton1;
                    clickCount = 1;
                    MouseUpEvent(this, new MouseEventArgs(button, clickCount, point.X, point.Y, 0));
                    break;
                }
                this.Point = new Point(MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y);
                return(MouseWin32Api.CallNextHookEx(hHook, nCode, wParam, lParam));
            }
        }
示例#3
0
 public int SetHook()
 {
     hProc = new MouseWin32Api.HookProc(MouseHookProc);
     hHook = MouseWin32Api.SetWindowsHookEx(WH_MOUSE_LL, hProc, IntPtr.Zero, 0);
     return(hHook);
 }