我的鼠标有问题。每当我只点击一次,它会偶尔双击。我知道这是鼠标的问题,我已经联系了制造商,仍然在等待回复。但在此期间,我想知道是否有一种方法可以在很短的时间(可能是1-10毫秒)内点击鼠标左键两次,并禁用第二次点击。拦截和禁用全局鼠标事件
我主要知道如何使用钩子,所以这不是问题,我的主要问题是如何阻止事件发生,如果可能的话。
我的鼠标有问题。每当我只点击一次,它会偶尔双击。我知道这是鼠标的问题,我已经联系了制造商,仍然在等待回复。但在此期间,我想知道是否有一种方法可以在很短的时间(可能是1-10毫秒)内点击鼠标左键两次,并禁用第二次点击。拦截和禁用全局鼠标事件
我主要知道如何使用钩子,所以这不是问题,我的主要问题是如何阻止事件发生,如果可能的话。
关于如何防止从正在处理的鼠标消息的信息是MSDN中的“LowLevelMouseProc回调函数”的文档中: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644986(v=vs.85).aspx 具体而言,说:“如果所述钩程序处理了该消息,它可能会返回一个非零值,以防止系统将消息传递给钩子链或目标窗口过程的其余部分。“所以,如果你了解windows hook,你就知道该怎么做。
编辑:实际上,现在我想到更多关于它,你不想丢弃任何事件。您只是想将doubleclick事件转换为另一个左键事件。我相信你可以在钩子处理程序中完成它,它会起作用。你试过了吗?
我还没有尝试过,感谢您的信息和想法,我会给它一个镜头。 – Elec0
在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库无关。您必须在操作系统的配置选项中更改鼠标的灵敏度。例如,在Windows的控制面板中,您可以更改点击与另一个点击之间必须经过多少时间才能被视为双击。在l Ubuntu中,你可以做同样的事情,在系统菜单>>首选项>>键盘和鼠标。
问题的标题显示“拦截和禁用全局鼠标事件”。 –
这个问题涉及Windows,而不是C++。你应该重播它。 – curiousguy
这是不切实际的,希望你能从制造商那里得到解决方案。买另一只老鼠。 –