检测是否按下了鼠标的后退/前进按钮

时间:2014-08-25 11:48:19

标签: c# winapi mouseevent

当我收到鼠标事件时,如何使用GetKeyState检测鼠标的后退或前进按钮是否已关闭? MSDN's virtual key code list似乎只定义鼠标左键,右键和中键。

传递给SetWindowsHookEx的回调方法:

[MethodImpl(MethodImplOptions.NoInlining)]
private IntPtr LowLevelMouseProc(int nCode, UIntPtr wParam, IntPtr lParam)
{
    Debug.WriteLine(wParam.ToUInt32());
    Debug.WriteLine("MK_XBUTTON1: " + (wParam.ToUInt32() & 0x20));
    Debug.WriteLine("MK_XBUTTON2: " + (wParam.ToUInt32() & 0x40));
}

按下后退或前进时输出以下内容:

523
MK_XBUTTON1: 0
MK_XBUTTON2: 0
524
MK_XBUTTON1: 0
MK_XBUTTON2: 0

1 个答案:

答案 0 :(得分:3)

您正在链接到Windows CE文档。 Virtual-Key Codes的桌面Windows文档包含VK_XBUTTON1VK_XBUTTON2代码。这些是附加鼠标按钮的常量,通常分配给前进和后退导航。

如果您想立即处理X按钮消息,请使用WM_XBUTTONDOWNWM_XBUTTONUP将其发布到您的应用程序。 wParam的低位字表示哪个X按钮已关闭(如果有)。