2009-06-10 35 views
3

我在尋找的功能類似於Google桌面。當你點擊Ctrl兩次,會彈出一個小小的搜索框。如何掛鉤雙擊Ctrl鍵?

我試過使用相當沉重的鍵盤鉤類,我發現某處,但不斷給予meunpredictable結果(即第一次它會工作,然後我會按Ctrl一次,它會提高關鍵按下事件幾次?)。

無論如何,這只是看起來像它應該是複雜的沒有,所以我覺得我必須做一些錯誤的。我的應用程序(WPF應用程序)將在主窗口的可見性設置爲隱藏的情況下運行,並且不在任務欄中。當我執行按Ctrl - 按Ctrl,我想抓住它,並顯示窗口。

另一方面的問題 - 我目前正在通過註冊一個熱鍵來做到這一點,但這並沒有給我我想要的全部功能(雙擊Ctrl)。當窗口顯示時,我還沒有找到一個100%的防欺騙方式來檢測它不再有焦點(我想在發生這種情況時再次隱藏它)。我試過對Deactivated,LostFocus等進行響應......而大部分時間都是這樣。但有時候看起來窗口並未實際被激活,或者沒有獲得焦點。 Anyy的想法呢?

謝謝!
Adam

回答

3

您可能希望使用SetWindowsHookEx以低級別掛入鍵盤事件。

下面是一些sample code in C++,這裏是pinvoke.net's entry,這將有助於該港口爲C#。

對於C#代碼,直接使用,你可以試試這個CodeProject sample。從我的記憶來看,它在大多數情況下都有效,並且有一些缺陷。有一次,我協助將其移植到Jad Engine,在那裏我們實現了一個類(UserActivityHook),並完成了這一過程,並修復了一些錯誤。這可能是一個非常好的開始的地方...

+0

這樣的回答根本不會解決問題的雙擊方面*。 – Synetech 2014-09-22 01:55:50

2

至於第二個問題,如果所示,當未激活的形式,你應該叫Form.Activate你顯示了上去。對於簡單的調試,將跟蹤語句放在GotFocus,LostFocus,Enter,Exit和Activate,Deactivate事件中,並查看這些事件是否符合您的需求。