【问题标题】:Double click timer event双击定时器事件
【发布时间】:2012-02-24 10:15:44
【问题描述】:

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

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

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

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

【问题讨论】:

  • 嗯,计时器?到目前为止你有什么?
  • 这只是我希望实现的可选功能!我还有其他功能,例如映射到左键和右键单击的闪烁!
  • 您的意思是您希望它与 Windows 资源管理器一起使用吗?所以你的程序需要能够判断光标是否悬停在可点击的东西上?
  • @Blorgbeard:我认为鼠标指针下方有一些“可点击”的东西!

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


【解决方案1】:

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

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

还有MouseEnter、MouseLeave等

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

【讨论】:

    【解决方案2】:
        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
        }
    

    【讨论】:

    • 查看编辑。在主题上点击 2 次 google,实现的代码非常明显
    • 哦不!我认为这是某种方法..你知道的!嗯,是的,我明白了!无论如何,感谢您的帮助!
    【解决方案3】:

    我猜你需要把它分解:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多