예제 #1
0
        protected override int HookCallbackProcedure(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode > -1 && (MouseLog != null))
            {
                MouseLLHookStruct mouseHookStruct =
                    (MouseLLHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseLLHookStruct));
                int            clickCount = 1;
                MouseButton    button     = GetButton(wParam, out clickCount);
                MouseEventType eventType  = GetEventType(wParam);
                var            deltaData  = (eventType == MouseEventType.MouseWheel
                    ? (short)((mouseHookStruct.mouseData >> 16) & 0xffff)
                    : 0);

                // Prevent multiple Right Click events (this probably happens for popup menus)
                if (button == MouseButton.Right && mouseHookStruct.flags != 0)
                {
                    eventType = MouseEventType.None;
                }
                var mouseEventArgs = new HookMouseEventArgs
                {
                    ClickButton     = button,
                    MouseEventType  = eventType,
                    ClickCount      = clickCount,
                    MousePosition   = new Point(mouseHookStruct.pt.x, mouseHookStruct.pt.y),
                    MouseWheelDelta = deltaData,
                    EventTimeStamp  = DateTime.Now
                };
                if (MonitorMouseMove || eventType != MouseEventType.MouseMove)
                {
                    MouseLog(mouseEventArgs);
                }
            }

            return(CallNextHookEx(_handleToHook, nCode, wParam, lParam));
        }
예제 #2
0
        /// <summary>
        /// 复制生成一个新对象
        /// </summary>
        /// <param name="hookMouseEvent"></param>
        /// <returns></returns>
        public static HookMouseEventArgs Copy(HookMouseEventArgs hookMouseEvent)
        {
            var newEvent = new HookMouseEventArgs();

            newEvent.XPosition       = hookMouseEvent.XPosition;
            newEvent.YPosition       = hookMouseEvent.YPosition;
            newEvent.MousePosition   = hookMouseEvent.MousePosition;
            newEvent.MouseEventType  = hookMouseEvent.MouseEventType;
            newEvent.MouseWheelDelta = hookMouseEvent.MouseWheelDelta;
            newEvent.EventTimeStamp  = hookMouseEvent.EventTimeStamp;
            return(newEvent);
        }