4

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

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

我被困在我想打开文件/文件夹的地方,这样当光标放在文件/文件夹上 3 到 5 秒时,文件/文件夹应该打开或只执行双击事件传统鼠标。

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

4

3 回答 3

1

我想你需要分解它:

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

对于 1,我会关注:如果您想要自己定义“悬停”,则捕获 WM_MOUSEMOVE 。例如,对您可以容忍的运动量有一个更大的阈值,并且仍然将其视为“悬停”。或者,您可以使用操作系统定义的阈值并查找WM_MOUSEHOVER

对于 2,SendInput应该可以带您到那里

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

这篇关于项目的文章构建了一个 Spy++ 风格的应用程序,应该会有所帮助。

于 2012-02-01T22:19:32.107 回答
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
    }
于 2012-02-01T19:25:45.313 回答
0

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

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

以及 MouseEnter、MouseLeave 等。

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

于 2012-02-01T19:14:25.267 回答