C# 抑制多个鼠标的点击

3
我编写了一个应用程序,目前可以处理来自多个鼠标设备的点击。我使用了this project并进行了修改,以处理鼠标点击而不是键盘。
这很好地发挥作用,但现在我需要知道是否有一种方法可以抑制已被我的应用程序处理的点击事件。该应用程序是一个问答游戏,所以想法是问答大师将拥有(并仍然能够使用)1个鼠标,其他参赛者将拥有自己的鼠标(作为蜂鸣器)。因此,当他们响应时,我不希望鼠标点击事件在操作系统中触发(或至少在此应用程序中不触发)。
这个概念是重载void WndProc(ref Message message),所以当我不希望点击事件触发时,我尝试不调用base.WndProc(ref Message),但这没有起作用。
有人能指点我正确的方向吗?

我是否应该选择Windows Hook路线?我已经看过了这个,但是我似乎无法弄清楚如何钩住每个鼠标设备。

任何帮助将不胜感激。

编辑:

这是一个Windows表单UI项目,而不是WPF。因此,Microsoft的MultiPoint SDK将不起作用。


1
微软多点触控 SDK 中有什么内容吗?http://www.microsoft.com/multipoint/mouse-sdk/showcase.aspx - 它支持处理来自多个鼠标的输入。 - dash
你比我快,我正要说,我应该提到我正在使用Windows Forms UI而不是WPF。我已经看过多点SDK了。 - user1830285
Windows钩子无法工作,这需要通过WM_INPUT进行原始输入。需要使用Pinvoke。 - Hans Passant
那么没有办法实现这个吗? - user1830285
1个回答

2
这个问题的解决方案不在于WndProc,而在于PreFilterMessage()。在消息到达窗体之前拦截它们,你可以从消息循环中移除它们,导致它们永远不会到达被点击的控件。这对于窗体内的子控件也适用。
我在下面的问题中回答了这个问题并发布了完整的源代码:
C# 获取鼠标句柄(GetRawInputDeviceInfo)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接