2013-02-26 71 views
0

我正在處理包含兩種窗體的窗體窗體應用程序。一個隱藏點擊其他。一次只能看到一種形式。 我已禁用它們兩個的Win + D鍵。使用以下爲在WIN + D上按下激活桌面

ntPtr hprog = NativeMethods.FindWindowEx(NativeMethods.FindWindowEx(NativeMethods.FindWindow("Progman", "Program Manager"), 
IntPtr.Zero, "SHELLDLL_DefView", ""), 
IntPtr.Zero, "SysListView32", "FolderView"); 
NativeMethods.SetWindowLong(this.Handle, GWL_HWNDPARENT, hprog); 

代碼但是,當我按下Win + d桌面被禁用,以激活桌面我需要按下Win + d一次。這兩種形式都在發生。你能證明這個原因嗎?無論表單是打開還是關閉,我都需要桌面始終處於活動狀態。這在一些PC上只發生在所有PC上。我正在開發Windows 7和Dot NEt 4.0。

+2

「你能證明這個原因嗎?」您正在使用未公開的本機調用攔截系統範圍的鍵盤快捷鍵。 – BoltClock 2013-02-26 13:49:14

+0

@BoltClock:實際上這就是應用程序的桌面小部件,所以我不希望它被最小化。 – 2013-02-26 13:52:51

+0

@KingCronus:我試過TopMost = true,MinimizeBox = false。有沒有其他方法可以做到這一點?請告訴我。 – 2013-02-26 13:55:49

回答

1

這可能不是你想要養成的習慣。大量的用戶使用Windows鍵快捷鍵,我不是說只是計算機的麻煩。我的妻子是一名護士,她使用了其中的一些。

您正在嘗試爲每個使用您的應用的用戶更改Windows的默認行爲,當您爲「鎖定」系統創建本機應用時,這只是一個好主意。如果環境不允許使用Windows鍵快捷方式,那麼您可以更改它們。

試圖強迫用戶做事情從來都不是正確的主意。

+1

我想補充一點。如果您正在爲「鎖定」系統創建本機應用程序,請*使用Windows Embedded而不是Windows。它允許您使用鍵盤過濾器來防止這些問題。 http://technet.microsoft.com/en-us/library/hh273235(v=winembedded.21).aspx – KingCronus 2013-02-26 14:01:33

+0

@KingCronus:由Windows引入的不錯功能,但不能使用它。感謝分享。 – 2013-02-26 14:12:22

相關問題