/// <summary> /// The callback for the mouse hook /// </summary> /// <param name="code">The hook code, if it isn't >= 0, the function shouldn't do anyting</param> /// <param name="wParam">The event type</param> /// <param name="lParam">The keyhook event information</param> /// <returns></returns> public int hookProc(int code, IntPtr wParam, IntPtr lParam) { mouseHookStruct MyMouseHookStruct = (mouseHookStruct)Marshal.PtrToStructure(lParam, typeof(mouseHookStruct)); if (code >= 0) { MouseEventArgs mea = new MouseEventArgs(MouseButtons.None, MyMouseHookStruct.dwExtraInfo, MyMouseHookStruct.pt.x, MyMouseHookStruct.pt.y, wParam.ToInt32()); if (MouseEvent != null) { MouseEvent(this, mea); } return(code); } Thread.Sleep(10); return(CallNextHookEx(hhook, code, wParam, lParam)); }
IntPtr mouseHookProc(int code, IntPtr wParam, ref mouseHookStruct lParam) { if (code >= 0) { if (0 == (lParam.flags & LLKHF_INJECTED)) { llMouseEventArgs mea = new llMouseEventArgs(lParam.point); MouseMove(this, mea); if (mea.Handled) { return((IntPtr)1); } } else { lParam.flags ^= LLKHF_INJECTED; } } return(NativeMethods.CallNextHook(mouseHook, code, wParam, ref lParam)); }
static extern int CallNextHookEx(IntPtr hhk, int code, int wParam, ref mouseHookStruct lParam);
public int mouseHookProc(int Code, int wParam, ref mouseHookStruct lParam) { if (Code >= 0) { switch (wParam) { case WM_MBUTTONDOWN: { if (MouseDown != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Middle, 1, lParam.pt.x, lParam.pt.y, 0); MouseDown(this, mArg); } break; } case WM_LBUTTONDOWN: { if (MouseDown != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Left, 1, lParam.pt.x, lParam.pt.y, 0); MouseDown(this, mArg); } break; } case WM_RBUTTONDOWN: { if (MouseDown != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Right, 1, lParam.pt.x, lParam.pt.y, 0); MouseDown(this, mArg); } break; } case WM_MBUTTONUP: { if (MouseUp != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Middle, 1, lParam.pt.x, lParam.pt.y, 0); MouseUp(this, mArg); } break; } case WM_LBUTTONUP: { if (MouseUp != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Left, 1, lParam.pt.x, lParam.pt.y, 0); MouseUp(this, mArg); } break; } case WM_RBUTTONUP: { if (MouseUp != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Right, 1, lParam.pt.x, lParam.pt.y, 0); MouseUp(this, mArg); } break; } case WM_MOUSEMOVE: { if (MouseMove != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.None, 0, lParam.pt.x, lParam.pt.y, 0); MouseMove(this, mArg); } break; } case WM_MOUSEWHEEL: { if (MouseWheel != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.None, 0, lParam.pt.x, lParam.pt.y, lParam.mouseData / 0xFFFF); MouseWheel(this, mArg); } break; } case WM_MBUTTONDBLCLK: { if (MouseDown != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Middle, 2, lParam.pt.x, lParam.pt.y, 0); MouseDouble(this, mArg); } break; } case WM_LBUTTONDBLCLK: { if (MouseDown != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Left, 2, lParam.pt.x, lParam.pt.y, 0); MouseDouble(this, mArg); } break; } case WM_RBUTTONDBLCLK: { if (MouseDown != null) { MouseEventArgs mArg = new MouseEventArgs(MouseButtons.Right, 2, lParam.pt.x, lParam.pt.y, 0); MouseDouble(this, mArg); } break; } } } return(CallNextHookEx(Hook, Code, wParam, ref lParam)); }