2012-02-01 103 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 ++風格的應用程序,這應該有所幫助。