如何使用C#锁定屏幕?

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

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

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

解决方法

作为屏幕抓取的替代方法(我在过去稍微不同的情况下也将其用作方法),您也可以通过创建一个全屏并在所有其他窗口之上的新窗口(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热键相关的注册表项,并且有点棘手(我认为它需要重新启动,无法动态切换).

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...