[英]How can I lock the screen using C#?
我只寫了我的第一個C#應用程序,它是一個調度程序。 每小時一次,我想彈出一個對話框並鎖定屏幕兩分鍾,以便休息一下。
到目前為止,我的應用程序只是在“TopMost”上顯示一個表單,它的時間是兩分鍾后打破並隱藏它。
我怎樣才能鎖定屏幕? 類似於Vista中的UAC風格。
Eep,誤讀了你的問題。 Vista的UAC對話框創建了一個新桌面並在其上顯示。 要創建桌面,您可以使用CreateDesktop功能。 然后,您可以使用SwitchDesktop切換到它。
如果您真的想要重新創建安全桌面的外觀,那么您需要先截取屏幕截圖並在表單上顯示,稍微變暗。
下面的原始答案,也可能是有趣的:
看看LockWorkStation功能。
但是,您無法以編程方式再次解鎖工作站。 這是用戶必須自己做的事情。 因此,除非你仍然使用頂級窗口技術拒絕用戶的工作空間,只要兩分鍾還沒有結束,你就不能輕易地進行至少兩分鍾的休息。
作為屏幕抓取的替代方法(我在過去稍微不同的情況下也將其用作方法),您也可以通過創建一個全屏並在所有其他窗口之上的新窗口(WinForm)來實現此目的。 。
如果您將窗口背景顏色設置為純黑色,然后將不透明度設置為70-80%,您將獲得類似於UAC提示的內容。
例如
formName.WindowState = FormWindowState.Maximized;
formName.FormBorderStyle = FormBorderStyle.None;
formName.Opacity = 0.70;
formName.TopMost = true;
當然,在此基礎上繪制一個窗口是明智的,通過計數器告知用戶屏幕為何變暗。
使用看起來像UAC提示(人們習慣於看到)的東西,根本沒有讓人們三思而后行,這取決於用例。
與屏幕抓取方法一樣,它本身並不會阻止用戶通過使用Windows鍵, Alt - Tab或Ctrl - Esc調出“開始”菜單或切換到其他任務來繞過它。
禁用內置鍵命令需要設置與Windows熱鍵相關的注冊表項,並且有點棘手(我認為它需要重新啟動,無法動態切換)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.