如何在c#中区分触摸与鼠标事件与SetWindowsHookEx

时间:2017-08-03 02:09:16

标签: c# wpf

我找到了一种听老鼠事件的方法,但我真正想要的是触摸事件而不是鼠标。他们似乎共享相同的代码。有没有办法判断事件是触摸而不是鼠标?谢谢

 getImage(query){
    
       return this._http.get(this.API_URL + this.baseUrl + query)
         .map(res => res.json());
    
   }

1 个答案:

答案 0 :(得分:2)

lParam回调的hookProc参数是指向MSLLHOOKSTRUCT的指针。它包含一个非常记录不良的dwExtraInfo变量,它告诉您它是否是通过触摸生成的。

如果0xFF515700中的所有位都设置在dwExtraInfo中,则会响应触摸调用回调:

[StructLayout(LayoutKind.Sequential)]
struct MSLLHOOKSTRUCT
{
    public POINT pt;
    public uint mouseData;
    public uint flags;
    public uint time;
    public IntPtr dwExtraInfo;
}

const int TOUCH_FLAG = 0xFF515700;
bool IsTouch(IntPtr lParam)
{
    MSLLHOOKSTRUCT hookData = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, 
        typeof(MSLLHOOKSTRUCT));
    uint extraInfo = (uint)info.dwExtraInfo.ToInt32();
    if ((extraInfo & TOUCH_FLAG) == TOUCH_FLAG)
        return true;
    return false;
}