2013-10-30 42 views
2

我正在VS2010上开发C#.NET4.0中的屏幕保护程序,它在实际显示屏幕(相当复杂的数据库访问)之前需要进行一定程度的处理。这很好,因为用户不知道这个处理正在进行,然后当一切准备就绪时,全屏幕表单就会启动。也就是说,除非我们在Windows 8上运行。屏幕保护程序如何在Windows 8中继续绘制桌面?

在Microsoft社区搜索(http://answers.microsoft.com/en-us/windows/forum/windows_8-desktop/bubbles-screensaver-has-black-background/e0807324-5ca6-4abe-b6ba-716848b41ff5?page=4)显示在Windows 8中进行了设计更改,以防止屏幕保护程序绘制桌面图像。之前绘制在桌面上的任何屏幕保护程序都会使用您选择的“metro”背景颜色绘制纯色背景。实验表明,这种背景会立即启动.scr文件,即在任何表单可以显示之前。因此,像最小化显示形式或0%不透明度这样的技巧是行不通的,因为这仅仅揭示了底下的简单背景。

我已经能够提出的最好的方法是,当我的代码开始时,即在任何数据库处理或其他屏幕构建发生之前,将全屏纯黑色窗体显示为第一个动作。为什么试图用另一个普通屏幕取代普通屏幕?那么,因为默认的Windows背景颜色似乎是蓝色的。蓝色就像BSOD蓝色一样,它在启动时看起来有点令人担忧。所以我为Windows 8用户体验做的最好的事情就是快速闪烁的蓝色,然后是3-4秒的纯黑色,然后屏幕上会显示一些有意义的内容。 微软的这种新行为显然是“按设计”。事实上,它并不以预览模式显示,显然是一个假设MS稍后会整理的错误。

所以我的问题是没有人知道任何解决方法,这样我就可以继续桌面显示,直到屏幕保护程序形式准备好踢?

+0

我不认为你应该尽量做到这一点,因为它仅仅意味着你试图绕过操作系统的安全性措施。最好展示一个“屏幕保护程序正在加载”的消息。 – PMF

+0

哦,顺便说一下:在这段时间内,您必须准备好放弃加载屏幕保护程序,因为用户可能在此刻重新开始工作。 – PMF

+0

谢谢PMF。加载过程中的中止已经被编码,所以不用担心。我很想知道Microsoft带来这种变化的安全风险是什么。屏幕保护程序现在是否被视为锁定屏幕?这从来不是这个应用程序的意图。 – ifinlay

回答

1

在win8中,这个尴尬的设计决定中出现了类似的问题,我挣扎了很多。 我最终不得不妥协,但是当我有时间时,我的搜索仍在继续寻找防弹解决方案。

现在我所做的是在监视系统启动后运行一个批处理文件,并让线程检测空闲时间并再次运行该批处理。

@start /wait Bubbles.scr /s & rundll32 user32.dll,LockWorkStation 

这样做是:

  • 在全屏开始屏幕预览(这部作品在Win8中)和用户操作的锁定屏幕上等待
  • 是显示和用户提示输入密码

正如我所说,这是一个妥协,直到找到更好的东西。希望它有帮助

1

更新为win10;尝试使用那个很酷的scr并发现相同的问题;

试图欺骗限制性,发现只有一个很长的解决方案:

  • 使屏幕的日志上调用的事件;通过gpedit

这里指令:https://superuser.com/questions/538146/run-a-batch-cmd-upon-screensaver

  • 现在,您将可以启动其他COMAND或应用程序时,屏幕保护程序启动;

  • 转到C:\ Windows \ System32下

  • 复制Bubbles.scr并重新命名为Bubbles.exe

  • 然后配置任务运行C:与参数\ Windows \ System32下\ Bubbles.exe/s(administration-> taskcheduler)

  • 使用一些windows屏幕保护程序和配置使用1分钟或更多; (或者使用“runsarver”空期权,从上链接或创建自己的empty.exe和重命名为而是.scr与右键菜单安装等)

找到很酷的应用程序来定制屏幕隐藏功能:http://winaero.com/download.php?view.8

所有做工精细一个缺点复选框来锁定PC必须取消选中(以下win10需要小错误,但工作的工作);

如果需要创建自己的应用程序来运行Bubbles并退出锁定PC或bat文件,如上所述等;

希望人们将有乐趣我的解决方案:)

相关问题