2010-01-15 23 views
1

在任務欄的通知區域中有一個使用Ctrl-F11組合鍵執行任務的小型第三方程序。問題是我正在使用相同的快捷方式,但我的另一個陰影。基本上,即使我的窗口是當前活動的窗口,當用戶按下Ctrl-F11時,我也無法完成我的任務。我認爲活動窗口會優先使用組合鍵,但顯然情況並非如此。考慮到該程序是用.NET C#編寫的,當我的應用程序處於活動狀態時,如何獲得快捷方式優先級?當我的應用程序處於活動狀態時,如何處理第三方組合鍵?

+0

您的應用程序如何檢查Ctrl-F11(例如,指定爲菜單快捷方式)。我假設托盤應用程序已將Ctrl-F11註冊爲WIndows熱鍵? – Nanook 2010-01-15 13:42:46

+0

我的Window有一個KeyDown事件,所以根據某些按鍵是否被按下,我正在採取行動。 – user246392 2010-01-15 13:47:50

+0

像你一樣,我本來期望窗口仍然會收到關鍵的新聞事件。 – Nanook 2010-01-15 13:52:28

回答

0

如果您無法更改托盤應用程序的組合鍵,並且您的應用程序中必須使用相同的組合。 一個極端的方法可能是在C++或Delphi中編寫Windows Hook DLL,並過濾Ctrl-F11的所有按鍵,並向您的應用程序發送消息。

這不是一個小任務,有些項目會在代碼項目中掛鉤Windows鍵盤事件等。您可以調整其中的一個。當您收到按鍵並且您的窗口/窗體處於活動狀態時,您可以使用SendMessage向您的窗口發送消息。

這將是最後的恢復。這取決於你多麼需要它。

+0

鍵盤鉤子很容易在C#中完成,請參閱http://blogs.msdn.com/toub/archive/2006/05/03/589423.aspx – stuartd 2010-01-15 14:01:51

相關問題