双击计时器事件

4
我正在开发一款应用程序,将用户的眼动轨迹与光标移动进行映射,从而开发出一种无需手动操作的光标控制系统。
我正在使用Open CV库的.NET Wrapper for C#即Emgu CV进行开发。
我遇到了一个问题,当光标停留在某个文件/文件夹上3至5秒时,我想打开该文件/文件夹,或执行传统鼠标的双击事件。我应该使用什么来解决这个问题?

1
嗯,一个计时器?你目前有什么进展? - Stu
这只是我想要实现的一个可选功能!我还有其他功能,比如将眨眼映射到左右点击! - ykombinator
2
你的意思是希望它能够与Windows资源管理器一起工作吗?因此,你的程序需要能够判断光标是否悬停在可点击的区域上? - Blorgbeard
@Blorgbeard:我假设鼠标指针下面有可点击的东西! - ykombinator
3个回答

1
    Timer timer = new System.Timers.Timer(5000);//5 seconds
    timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);

    private void form_MouseHover(object sender, System.EventArgs e) 
    {            
        timer.Start();
    }

    private void form_MouseLeave(object sender, System.EventArgs e) 
    {            
        timer.Stop();
    }

    void timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        timer.Stop();
        OpenFileOrFolder();//Edit : implement your file / folder opening logic here
    }

1
实现这段代码非常明显,只需在该主题上进行2次谷歌搜索。 - Mehdi LAMRANI
哦不!我以为它是某个方法..你知道的!好吧,是的,我明白了!无论如何,感谢你的帮助! - ykombinator

1

我猜你需要将其分解:

  1. 检测鼠标移动或悬停的时机
  2. 发送双击

对于第1点,如果你想自己定义“悬停”,可以参考捕获WM_MOUSEMOVE。例如,如果你想要一个更大的阈值来容忍多少移动仍然被认为是“悬停”,或者你可以使用操作系统定义的阈值并寻找WM_MOUSEHOVER

对于第2点,SendInput 应该能够帮助你实现这一目标。

在此假设你并不关心鼠标下面的内容。也就是说,无论鼠标下面是什么,你都会发送双击。例如,当你悬停在标题栏上时,也会像悬停在文件上时一样发送双击。

这篇文章介绍了如何构建一个类似Spy++的应用程序,对编程有所帮助。


0
你是否正在将眼控映射到鼠标指针上?MouseHover事件可能会有用:

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousehover.aspx

除了MouseEnter,MouseLeave等之外。

如果您正在使用眼睛控制一个单独的元素(即不是鼠标),那么我在WPF中也要做类似的事情。最终是将控件坐标映射到鼠标位置,计算在该控件范围内的时间,然后调用鼠标点击事件处理程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接