Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF多点触控在Windows 10中侦听系统范围的触地事件_C#_Wpf_Winforms_Touch Event - Fatal编程技术网

C# WPF多点触控在Windows 10中侦听系统范围的触地事件

C# WPF多点触控在Windows 10中侦听系统范围的触地事件,c#,wpf,winforms,touch-event,C#,Wpf,Winforms,Touch Event,到目前为止,我只能通过以下方式在我的应用程序窗口中收听触摸事件: this.TouchDown += new EventHandler<TouchEventArgs>(TouchableThing_TouchDown); this.TouchMove += new EventHandler<TouchEventArgs>(TouchableThing_TouchMove); private void TouchableThing_TouchDown(object sen

到目前为止,我只能通过以下方式在我的应用程序窗口中收听触摸事件:

this.TouchDown += new EventHandler<TouchEventArgs>(TouchableThing_TouchDown);
this.TouchMove += new EventHandler<TouchEventArgs>(TouchableThing_TouchMove);

private void TouchableThing_TouchDown(object sender, TouchEventArgs e){}
private void TouchableThing_TouchMove(object sender, TouchEventArgs e){}
this.TouchDown+=新事件处理程序(TouchableThing\u TouchDown);
this.TouchMove+=新事件处理程序(TouchableThing\u TouchMove);
私有void TouchableThing_触地(对象发送方,TouchEventArgs e){}
私有void TouchableThing_TouchMove(对象发送方,TouchEventArgs e){}

但我意识到我也需要捕捉窗外的触摸事件。是否有一个已知的事件可以让我监听,这样它不仅可以覆盖我自己的窗口,还可以覆盖整个屏幕?

要获取窗口外的输入事件,需要深入研究p/invoke区域。具体来说,您需要设置所谓的。更具体地说,您需要添加一个钩子,它允许您监视系统范围内的鼠标事件(触摸输入是鼠标输入的演变,因此它们都由Windows一起处理)

这个问题提供了关于使用钩子解释触摸输入的宝贵信息和示例:

在我的例子中,您可以开始使用这种方法,因为我只能启动64位或32位的钩子,但不能同时启动两者。我已经为我的应用程序使用了
RAWINPUT
,因为它提供了对HID触摸设备数据的直接访问。很久以前我就计划分享我的答案,但还没有时间详细解释。