Как заблокировать экран с помощью C#?

Я просто пишу свое первое приложение c#, которое является планировщиком. Раз в час я хочу открыть диалоговое окно и заблокировать экран на две минуты, чтобы сделать перерыв.

на данный момент, мое приложение просто показывает форму на "TopMost", когда его время, чтобы сломать и скрывает его через две минуты.

Как я могу заблокировать экран, а также? Что-то похожее на стиль UAC в Vista.

2 ответов


в качестве альтернативы захвату экрана (который я также использовал в качестве подхода в прошлом при немного других обстоятельствах) вы также можете сделать это, создав новое окно (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, и немного сложнее (I думаю он требует перезагрузки и не может быть переключена "на лету").


Eep, неправильно понял ваш вопрос. Диалог UAC Vista создает новый рабочий стол и показывает себя на нем. Для создания рабочего стола можно использовать CreateDesktop