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

本文关键字:鼠标 单击 禁止 | 更新日期: 2023-09-27 17:56:11

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

我使用了这个项目,并进行了修改以处理分配给键盘的鼠标单击。

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

这个概念是熟悉的 void WndProc(ref 消息消息)的覆盖,所以我尝试不调用 base。WndProc(ref 消息)当我不希望触发点击事件时,但这不起作用。

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

我应该走窗户钩子路线吗?我已经看过这个,但我似乎无法弄清楚如何单独挂接到每个鼠标设备。

任何帮助将不胜感激。

编辑:

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

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

这个问题的解决方案不在WndProc中,而是在PreFilterMessage()中。通过在消息到达窗体之前截获消息,可以从消息泵中删除它们,从而使它们永远无法访问单击的控件。这也适用于窗体中的子控件。

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

C# 获取鼠标句柄 (GetRawInputDeviceInfo)