我正在 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 稍后会整理。
所以我的问题是有没有人知道解决这个问题的任何方法,以便我可以继续显示桌面,直到屏幕保护程序表格准备好启动?