双击计时器事件

时间:2012-02-01 18:00:24

标签: c# .net winforms emgucv eye-tracking

我正在开发一个应用程序,用于将用户的眼球运动与光标移动进行映射,从而开发出一个免费的光标控制系统。

我正在使用Open CV库的.NET Wrapper for C#,即用于开发的Emgu CV。

我被困在我想要打开文件/文件夹的位置,以便当光标放在文件/文件夹上3至5秒时,文件/文件夹应该打开或者只是执行双重操作点击传统鼠标的事件。

我可以用什么来解决这个问题?

3 个答案:

答案 0 :(得分: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 :(得分:1)

我想你需要分解它:

  1. 检测鼠标何时移动或悬停
  2. 发送双击
  3. 对于1,如果你想要自己定义的'悬停',我会看:capturing WM_MOUSEMOVE。例如,您可以容忍多少运动的阈值,并仍然认为它是“悬停”。或者,您可以使用操作系统定义的阈值并查找WM_MOUSEHOVER

    对于2,SendInput应该让你到那里

    我假设在这里,你实际上并不关心鼠标本身的含义。同样,根据鼠标下的内容,你不会做不同的行为。例如,当您将鼠标悬停在标题栏上时,以及将鼠标悬停在文件上时,都会发送双击。

    项目上的

    This article构建了一个Spy ++风格的应用程序,应该有所帮助。

答案 2 :(得分:0)

您是否将眼控制映射到鼠标指针? MouseHover事件可能很有用:

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

以及MouseEnter,MouseLeave等

如果你用眼睛控制一个单独的元素(即不是鼠标),那么我必须在WPF中做类似的事情。它最终归结为将控制坐标映射到鼠标位置,计算该控件边界内的时间,然后调用鼠标单击事件处理程序。