C#禁止鼠标点击多个鼠标

时间:2013-01-25 09:17:02

标签: c# winforms hook hid wndproc

我编写了一个应用程序,目前处理来自多个鼠标设备的点击。

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

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

这个概念是熟悉的 void WndProc(参考消息消息)的覆盖,所以当我不知道时,我试过不打电话给 base.WndProc(参考消息)我希望触发点击事件,但这没有用。

有人能指出我正确的方向吗?

我应该走windows hook路线吗?我已经看过了这个,但我似乎无法弄清楚如何能够单独挂钩每个鼠标设备。

非常感谢任何帮助。

修改

这是一个Windows窗体UI项目,而不是WPF。所以MultiPoint SDK from Microsoft无效。

1 个答案:

答案 0 :(得分:2)

解决方法不在于WndProc,而在于PreFilterMessage()。通过在消息到达表单之前拦截消息,您可以将它们从消息泵中删除,从而导致它们永远不会到达被单击的控件。这也适用于表单中的子控件。

我回答了这个问题并在以下问题中发布了完整的来源:

C# Get Mouse handle (GetRawInputDeviceInfo)