2013-01-25 51 views
3

我写了一个应用程序,当前处理来自多个鼠标设备的点击。C#抑制鼠标点击多个鼠标

我使用了this project并进行了修改,以处理与键盘相关的鼠标点击。

这工作正常,但现在我需要知道是否有一种方法来抑制单击事件,如果它已被我的应用程序处理。该应用程序是一个测验游戏,所以想法是测验大师将有(并且仍然能够使用)1只老鼠,其他参赛者将拥有自己的鼠标(作为蜂鸣器)。所以当他们进入时,我不希望在操作系统(或者至少这个应用程序)中点击鼠标点击事件。

概念无效的WndProc(参考消息消息)熟悉的覆盖,而这就是我一直没有要求base.WndProc(参考消息)时,我不想让点击事件触发,但这没有奏效。

有人可以在这里指出我正确的方向吗?

我应该去windows hook路线吗?我已经看过这个,但我似乎无法弄清楚如何单独连接每个鼠标设备。

任何帮助将不胜感激。

编辑:

这是一个Windows窗体UI项目,而不是WPF。所以MultiPoint SDK from Microsoft将无法​​正常工作。

+1

有没有在微软多点SDK什么? http://www.microsoft.com/multipoint/mouse-sdk/showcase.aspx - 它支持处理来自多个鼠标的输入。 – dash

+0

你打败了我,我想说,我应该提到即时通讯使用Windows窗体用户界面,而不是WPF。我已经看过多点SDK。 – user1830285

+0

窗口挂钩不起作用,这需要通过WM_INPUT进行原始输入。需要拼音。 –

回答

1

对此的解决方案不在WndProc中,而是在PreFilterMessage()中。通过在消息到达表单之前拦截消息,您可以将消息从消息泵中移除,从而使它们永远达不到所单击的控件。这也适用于表单中的子控件。

我回答了这个并张贴的完整源代码在以下问题:

C# Get Mouse handle (GetRawInputDeviceInfo)