2012-02-01 107 views
4

我正在开发一个应用程序,将用户的眼球运动与光标移动进行映射,因此开发了一个免费光标控制系统。双击计时器事件

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

我被困在一个点上,我想打开一个文件/文件夹,这样当光标放在文件/文件夹上时,比如说3到5秒,文件/文件夹应该打开或者只执行一个双精度传统鼠标的点击事件。

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

+1

恩,一个计时器?到目前为止,你有什么? – Stu 2012-02-01 18:05:57

+0

这只是一个我愿意实现的可选功能!我还有其他功能,如眨眼映射到左右点击! – ykombinator 2012-02-01 18:07:52

+2

你的意思是你想让它与Windows资源管理器一起使用吗?所以你的程序需要能够判断光标是否在可点击的东西上徘徊? – Blorgbeard 2012-02-01 18:18:56

回答

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 
    } 
+0

我想知道'OpenFileOrFolder()'是什么方法! – ykombinator 2012-02-02 08:30:40

+1

请参阅编辑。实施代码非常明显,主题为 – 2012-02-02 12:20:19

+0

的2次谷歌点击哦,不!我认为这是一些方法..你知道!好的,我明白了!无论如何,感谢您的帮助! – ykombinator 2012-02-02 12:39:33

0

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

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

除了的MouseEnter,鼠标离开,等

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

1

我猜你需要打破它:

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

对1,我会寻找在:capturing WM_MOUSEMOVE如果你想要你自己的'悬停'的定义。例如,对于您可以容忍的移动量有更大的阈值,并且仍然认为它是“悬停”。或者,你可以使用操作系统定义的阈值,并查找WM_MOUSEHOVER

对于2,SendInput应该让你有

我假设在这里,你不真正关心每本身的鼠标下什么。如在,你不会做不同的行为,取决于鼠标下的内容。例如,当您将鼠标悬停在标题栏上时,您会发送双击,以及是否将鼠标悬停在文件上。

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