Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Windows 拦截和禁用全局鼠标事件_Windows_Winapi_Mouseevent - Fatal编程技术网

Windows 拦截和禁用全局鼠标事件

Windows 拦截和禁用全局鼠标事件,windows,winapi,mouseevent,Windows,Winapi,Mouseevent,我的鼠标有问题。当我只单击一次时,它会时不时地双击。我知道这是鼠标的问题,我已经联系了制造商,还在等待答复。但与此同时,我想知道是否有一种方法可以让我在很短的时间内(可能是1-10毫秒)两次点击鼠标左键,并禁用第二次点击 我基本上知道如何使用钩子,所以这不是问题所在,我的主要问题是如果可能的话,如何阻止事件发生。在C#的WinForms中,您编写了一个事件处理程序,涉及鼠标接收MouseEventArgs对象。在它里面,你可以访问某些信息,比如它被点击的次数 protected void Row

我的鼠标有问题。当我只单击一次时,它会时不时地双击。我知道这是鼠标的问题,我已经联系了制造商,还在等待答复。但与此同时,我想知道是否有一种方法可以让我在很短的时间内(可能是1-10毫秒)两次点击鼠标左键,并禁用第二次点击

我基本上知道如何使用钩子,所以这不是问题所在,我的主要问题是如果可能的话,如何阻止事件发生。

在C#的WinForms中,您编写了一个事件处理程序,涉及鼠标接收MouseEventArgs对象。在它里面,你可以访问某些信息,比如它被点击的次数

protected void RowClicked(object sender, MouseEventArgs evt)
{
    // Trigger it when the mouse was clicked only once
    if( evt.Button.Clicks == 1 ) {
        // ... more things ...
    }

    return;
}

其他GUI库还有其他可能性。也就是说,您的问题与GUI库无关。您必须在操作系统的配置选项中更改鼠标的灵敏度。例如,在Windows的“控制面板”中,您可以更改一次单击和另一次单击之间的时间间隔,以将其视为双点单击。在lUbuntu,您也可以在系统菜单>>首选项>>键盘和鼠标中执行同样的操作。

有关如何防止处理鼠标消息的信息,请参阅MSDN中的“LowLevelMouseProc回调函数”文档: 具体来说,它说:“如果钩子过程处理了消息,它可能会返回一个非零值,以防止系统将消息传递给钩子链的其余部分或目标窗口过程。”因此,如果您了解windows钩子,您就知道如何做


编辑:事实上,现在我想了很多,你不想放弃任何事件。您只需要将双击事件转换为另一个左键按下事件。我相信你可以在钩子处理器中完成,而且它会起作用。这个问题涉及Windows,而不是C++。你应该重新标记。这和希望从制造商那里得到解决方案一样不现实。买另一只鼠标。问题的标题是“拦截和禁用全局鼠标事件”。我还没有尝试过,谢谢你提供的信息和想法,我会尝试一下。