如何使用C#锁定屏幕?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用C#锁定屏幕?相关的知识,希望对你有一定的参考价值。

我只写了我的第一个C#应用程序,它是一个调度程序。每小时一次,我想弹出一个对话框并锁定屏幕两分钟,以便休息一下。

截至目前,我的应用程序只是在“TopMost”上显示一个表单,时间是两分钟后打破并隐藏它。

我怎样才能锁定屏幕?类似于Vista中的UAC风格。

答案

作为屏幕抓取的替代方法(我在过去稍微不同的情况下也将其用作方法),您也可以通过创建一个全屏并在所有其他窗口之上的新窗口(WinForm)来实现此目的。 。

如果您将窗口背景颜色设置为纯黑色,然后将不透明度设置为70-80%,您将获得类似于UAC提示的内容。

EG

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

当然,在此基础上绘制一个窗口是明智的,通过计数器告知用户屏幕为何变暗。

使用看起来像UAC提示(人们习惯于看到)的东西,根本没有让人们三思而后行,这取决于用例。

与屏幕抓取方法一样,它本身并不会阻止用户通过使用Windows键,Alt-Tab或Ctrl-Esc来启动“开始”菜单或切换到其他任务来绕过它。

禁用内置键命令需要设置与Windows热键相关的注册表项,并且有点棘手(我认为它需要重新启动,无法动态切换)。

另一答案

Eep,误读了你的问题。 Vista的UAC对话框创建了一个新桌面并在其上显示。要创建桌面,您可以使用CreateDesktop函数。然后,您可以使用SwitchDesktop切换到它。

如果您真的想要重新创建安全桌面的外观,那么您需要先截取屏幕截图并在表单上显示,稍微变暗。


下面的原始答案,也可能是有趣的:

看看LockWorkStation功能。

但是,您无法以编程方式再次解锁工作站。这是用户必须自己做的事情。因此,除非你仍然使用顶级窗口技术拒绝用户的工作空间,只要两分钟还没有结束,你就不能轻易地进行至少两分钟的休息。

以上是关于如何使用C#锁定屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

使用回溯计算屏幕锁定模式的问题

如何在不锁定活动方向的情况下锁定片段方向?

如何以编程方式使用密码设置屏幕锁定?

如何在屏幕方向更改时附加片段?

如何在锁定屏幕上执行通知操作(点击)?

如何在应用程序启动时显示锁定屏幕?