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

本文关键字:继续 桌面 绘制 Windows 程序 屏幕保护 | 更新日期: 2023-09-27 18:37:22

我正在用C#开发屏幕保护程序。VS2010上的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背景颜色似乎是蓝色。 那是蓝色的,就像蓝屏蓝一样,当它启动时看起来有点令人震惊。 因此,我能为Windows 8用户体验做的最好的事情就是快速闪烁蓝色,然后是3-4秒的纯黑色,然后屏幕填充有意义的内容。Microsoft的这种新行为显然是"设计使然"。 它没有在预览模式下表现出来的事实显然是一个错误,人们认为 MS 稍后会整理。

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

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

关于win8中这个尴尬的设计决策,我在类似的问题上挣扎了很多。我最终不得不妥协,但我有时间时继续寻找防弹解决方案。

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

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

这样做的是:

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

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

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

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

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

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

  • 现在,您将能够在屏幕保护程序启动时启动其他组合或应用程序;

  • goto C:''Windows''System32

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

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

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

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

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

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

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

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