2

我正在 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 稍后会整理。

所以我的问题是有没有人知道解决这个问题的任何方法,以便我可以继续显示桌面,直到屏幕保护程序表格准备好启动?

4

2 回答 2

1

关于 win8 中这个尴尬的设计决策,我为类似的问题苦苦挣扎。我最终不得不妥协,但当我有时间时,我会继续寻找一种防弹解决方案。

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

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

这是做什么的:

  • 全屏启动屏幕保护程序预览(这在win8中有效)并等待
  • 在用户操作锁定屏幕上显示并提示用户输入密码

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

于 2014-04-24T12:35:07.457 回答
1

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

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

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

这里通过 gpedit 进行说明:https ://superuser.com/questions/538146/run-a-batch-cmd-upon-screensaver

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

  • 转到 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

(处理小错误,但在 win10 下根据需要工作)

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

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

希望人们会喜欢我的解决方案:)

于 2015-08-21T13:47:14.607 回答