2009-10-19 59 views
5

我只寫了我的第一個C#應用程序,這是一個調度程序。每隔一小時我想彈出一個對話框並鎖定屏幕兩分鐘以休息一下。如何使用C#鎖定屏幕?

截至目前,我的應用程序只是在「TopMost」上顯示一個表格,當它在兩分鐘後打破並隱藏它時。

我該如何鎖定屏幕?類似於Vista中的UAC風格。

回答

5

作爲替代服用屏幕抓取(這我也用作爲下略有不同的情況,在過去的方法),你也可以通過創建一個新的窗口(WinForm的)這是全屏做到這一點,在所有其他窗口之上。

如果你設置窗口的背景顏色爲純黑色,然後設置不透明度爲70%-80%,你會得到的東西看起來像在Vista的UAC提示。

例如

formName.WindowState = FormWindowState.Maximized; 
formName.FormBorderStyle = FormBorderStyle.None; 
formName.Opacity = 0.70; 
formName.TopMost = true; 

當然,這將是明智的畫在此之上的窗口告知爲什麼屏幕已變暗的用戶,用一個計數器。

與屏幕抓取的方式,這在它自己並不能阻止用戶通過使用Windows鍵,Alt鍵傳遞 - 標籤按Ctrl - Esc鍵,彈出開始菜單或切換到其他任務。這有點棘手。

8

呃,誤解你的問題。 Vista的UAC對話框創建一個新的桌面並在其上顯示。要創建桌面,您可以使用CreateDesktop函數。然後您可以使用SwitchDesktop切換到它。

如果你真的想重新創建安全桌面的外觀,那麼您需要首先採取截圖,並顯示您的窗體,昏暗一點上。下面


原來的答覆,這可能是興趣也:

看看在LockWorkStation功能。

然而,你不能以編程再次解鎖工作站。這是用戶必須自己做的事情。因此,除非您仍然使用頂級窗口技術來拒絕用戶的工作空間,只要這兩分鐘還沒有結束,您就不能輕鬆地休息至少兩分鐘。

+1

我覺得他意味着UAC風格,不鎖定工作站 – Pondidum

+0

哦,對。我的錯。 – Joey

+1

+1用於確定他的意思。至少它是一個步驟。 – Will