private int CallNextHook(int code, MouseMessage message, ref MouseState state) { if (code >= 0) { var button = MouseButtons.None; switch (message) { case MouseMessage.LDown: //case MouseMessage.LUp: button = MouseButtons.Left; break; case MouseMessage.RDown: //case MouseMessage.RUp: button = MouseButtons.Right; break; case MouseMessage.MDown: //case MouseMessage.MUp: button = MouseButtons.Middle; break; case MouseMessage.XDown: //case MouseMessage.XUp: if (state.XButtonData.IsXButton1) { button = MouseButtons.XButton1; } if (state.XButtonData.IsXButton2) { button = MouseButtons.XButton2; } break; default: button = MouseButtons.None; break; } if ((_captureMouseButtons.Length == 0 || _captureMouseButtons.Contains(_button)) && button != MouseButtons.None) { var e = new GlobalMouseHookedEventArgs( message, button, IsDoubleClick(button, state), IsDesktop(state), ref state); OnMouseHooked(e); if (e.Cancel) { return(-1); } } } return(CallNextHookEx(_hook, code, message, ref state)); }
/// <summary> /// MouseHookedイベントを発生させる。 /// </summary> /// <param name="e">イベントのデータ。</param> protected virtual void OnMouseHooked(GlobalMouseHookedEventArgs e) { var handler = Events[EventMouseHooked] as GlobalMouseHookedEventHandler; if (handler != null) { handler(this, e); } }
private int CallNextHook(int code, MouseMessage message, ref MouseState state) { if (code >= 0) { var button = MouseButtons.None; switch (message) { case MouseMessage.LDown: //case MouseMessage.LUp: button = MouseButtons.Left; break; case MouseMessage.RDown: //case MouseMessage.RUp: button = MouseButtons.Right; break; case MouseMessage.MDown: //case MouseMessage.MUp: button = MouseButtons.Middle; break; case MouseMessage.XDown: //case MouseMessage.XUp: if (state.XButtonData.IsXButton1) button = MouseButtons.XButton1; if (state.XButtonData.IsXButton2) button = MouseButtons.XButton2; break; default: button = MouseButtons.None; break; } if ((_captureMouseButtons.Length == 0 || _captureMouseButtons.Contains(_button)) && button != MouseButtons.None) { var e = new GlobalMouseHookedEventArgs( message, button, IsDoubleClick(button, state), IsDesktop(state), ref state); OnMouseHooked(e); if (e.Cancel) return -1; } } return CallNextHookEx(_hook, code, message, ref state); }
/// <summary> /// MouseHookedイベントを発生させる。 /// </summary> /// <param name="e">イベントのデータ。</param> protected virtual void OnMouseHooked(GlobalMouseHookedEventArgs e) { var handler = Events[EventMouseHooked] as GlobalMouseHookedEventHandler; if (handler != null) handler(this, e); }