如何在Windows 8中继续在桌面上绘制屏幕保护程序?

时间:2013-10-30 08:52:33

标签: c# .net windows windows-8 screensaver

我正在VS2010上的C#.NET4.0中开发一个屏幕保护程序,它需要在实际显示屏幕(相当复杂的数据库访问)之前进行一些处理。这很好,因为用户不知道正在进行此处理,然后在一切准备就绪时全屏表单启动。也就是说,除非我们在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中进行了一项设计更改,可防止屏幕保护程序覆盖桌面图像。之前绘制在桌面上的任何屏幕保护程序都将使用您选择的“地铁”背景颜色绘制普通背景。试验表明,这个背景会立即启动.scr文件启动,即在显示任何表单之前。因此,显示形式最小化或0%不透明度的技巧不起作用,因为这只是显示下面的普通背景。

我能够想到的最好的方法是在我的代码开始时,即在进行任何数据库处理或其他屏幕构建之前,将全屏纯黑色表格显示为第一个动作。为什么要尝试用另一个普通屏幕替换普通屏幕?好吧,因为默认的Windows背景颜色似乎是蓝色的。这是蓝色的BSOD蓝色,当它开始播放时看起来有点令人震惊。所以我能为Windows 8用户体验做的最好的事情是快速闪烁蓝色,然后是3-4秒的纯黑色,然后屏幕上填充了一些有意义的东西。 微软的这种新行为显然是“按设计”。事实上,它没有在预览模式中表现出来,这显然是一个错误,人们会假设MS稍后会整理。

所以我的问题是,是否有人知道这方面的任何方式,以便我可以继续显示桌面,直到屏幕保护程序表格准备好开始?

2 个答案:

答案 0 :(得分:1)

对于win8中这个尴尬的设计决定,我遇到了类似的问题。 我最终不得不妥协,但是当我有时间的时候,我继续寻找一个防弹解决方案。

现在我最终得到的是在监控系统启动后运行批处理文件并让线程检测空闲时间并再次运行该批处理。

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

这是做什么的:

  • 以全屏方式启动屏幕保护程序预览(这适用于win8)并等待
  • 在用户操作锁定屏幕上显示,用户提示输入密码

正如我所说的那样妥协,直到找到更好的东西。希望它有所帮助

答案 1 :(得分:1)

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

尝试欺骗ms限制,只找到一个非常长的解决方案:

  • 启用屏幕保护程序调用事件的记录;

此处通过gpedit发出指令:https://superuser.com/questions/538146/run-a-batch-cmd-upon-screensaver

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

  • 转到C:\ Windows \ System32

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

  • 然后配置任务以使用参数/ s(管理 - >任务调度程序)运行C:\ Windows \ System32 \ Bubbles.exe

  • 使用一些Windows屏幕保护程序和配置使用1分钟或更长时间; (或使用' runsarver'使用上方链接中的空选项或创建自己的empty.exe并重命名为.scr并使用右侧菜单安装等)

找到很酷的应用来自定义隐藏的屏幕保护功能:http://winaero.com/download.php?view.8

(使用小错误但在win10下根据需要工作)

所有工作正常的一个缺点复选框锁定PC必须取消选中;

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

希望人们能用我的解决方案获得乐趣:)