如何在Delphi中检测鼠标的前后点击?

时间:2014-12-19 23:20:35

标签: delphi delphi-xe3 mouseclick-event

我有一台Trust GXT-25鼠标,它有4个按钮:左,右,后和下一个。

我只能左右抓。如何在Delphi XE3中检测剩余的2个事件?

2 个答案:

答案 0 :(得分:6)

根据鼠标实现这些按钮的方式,您必须:

  1. 直接处理WM_XBUTTONDOWNWM_XBUTTONUP消息,或WM_APPCOMMAND消息。有关更多详细信息,请参阅MSDN:

    About Mouse Input: XBUTTONs

    通过使用ApplicationEvents.OnMessage事件处理程序,可以使用Delphi实现:

    const
      {$EXTERNALSYM MK_XBUTTON1}
      MK_XBUTTON1 = $20;
      {$EXTERNALSYM MK_XBUTTON2}
      MK_XBUTTON2 = $40;
      {$EXTERNALSYM XBUTTON1}
      XBUTTON1 = $1;
      {$EXTERNALSYM XBUTTON2}
      XBUTTON2 = $2;
    
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      case Msg.message of
        WM_XBUTTONDOWN:
          case LoWord(Msg.wParam) of
            MK_XBUTTON1: { Handle Back };
            MK_XBUTTON2: { Handle Forward };
          end;
        WM_XBUTTONUP:
          case HiWord(Msg.wParam) of
            XBUTTON1: { Handle Back };
            XBUTTON2: { Handle Forward };
          end;
      end;
    end;
    
  2. 使用Raw Input API注册所需的窗口以接收鼠标输入的WM_INPUT条消息。

答案 1 :(得分:0)

根据鼠标驱动程序,甚至可以按下其中一个特殊鼠标按钮甚至不会生成任何鼠标事件,而是驱动程序可能以编程方式发送键盘命令。

您正在谈论后退和下一个按钮。这些按钮是否适用于浏览器中的后退和前进导航?

如果他们这样做,那么很可能鼠标驱动程序正在为此生成键盘等效的shourtcuts(ALT + Left for Back和ALT + Right for Next)。

所以我建议您尝试使用OnKeyDown和OnKeyUp事件来查看是否是这种情况。

相关问题