2012-07-29 37 views
3

我有一個名爲Form1的窗體。我設置熱鍵Ctrl + G做:如何從全局熱鍵設置我的表單活動?

Show(); 
Active(); 
TopMost = true; 
TopMost = false; 
TextBox1.Focus(); 

雖然我在記事本中我打字,我按下該快捷鍵,我的Form1上出現了,就像這樣: enter image description here

兩個記事本和Form1上有文字光標,但當繼續輸入時,Form1.TextBox1不會得到輸入,但記事本會得到。

但是,當通過Visual Studio和調試(F5)打開解決方案時,我的Form1得到輸入,並且記事本沒有。

你能幫我解決這個問題嗎?非常感謝你!

+0

正如你發現的那樣,設置窗體的TopMost屬性不是一個解決方案。從屏幕截圖中診斷WM_HOTKEY代碼的問題是不可能的,您需要發佈代碼。 – 2012-07-29 17:44:32

+0

我爲全局掛鉤設置了此操作。我試過埃裏克J.的解決方案(在下面),但我看到它只工作,如果我設置爲一個按鈕(或其他控制),但不工作的全球性鉤 – Sakura 2012-08-03 10:56:32

+0

好吧,你去,不要使用全局鉤子。在搜索框中輸入「registerhotkey」。 – 2012-08-03 10:58:01

回答

2

嘗試調用ShowWindowAsync和SetForegroundWindow從您的WinForms本身過程這裏概述:

http://weimenglee.blogspot.com/2007/01/programmatically-switch-to-another.html

看來,記事本仍然是活動的應用程序。

+0

我做了你說的,但是有一個問題:當我按下熱鍵時,記事本圖標仍然有效,但我在任務欄的Form1圖標變爲閃爍 – Sakura 2012-07-29 09:02:26

+0

問題可能是這樣的: (來自SetForegroundWindow() Windows NT 5.0和更高版本:當用戶使用另一個窗口時,應用程序無法強制窗口進入前臺。相反,SetForegroundWindow將激活該窗口(請參閱SetActiveWindow)並調用FlashWindowEx函數來通知用戶。 – Sakura 2012-07-29 09:30:12

+0

嗯...我知道一個事實,它是*可能*強制一個窗口有焦點。例如,Visual Studio在調試時會這樣做(我有時會在我正在調試的程序中輸入內容,而VS會因爲遇到意外的異常而切換到前臺。 – 2012-07-29 16:45:31