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

Posted

技术标签:

【中文标题】屏幕保护程序如何在 Windows 8 中继续在桌面上绘图?【英文标题】:How can a screensaver continue to draw over the desktop in Windows 8? 【发布时间】:2013-11-09 18:08:04 【问题描述】:

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

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

【问题讨论】:

我认为你不应该尝试这样做,因为这仅仅意味着你试图绕过操作系统的安全措施。最好显示“屏幕保护程序正在加载”之类的消息。 哦,顺便说一句:您必须准备好在此期间中止加载屏幕保护程序,因为此时用户可能会重新开始工作。 感谢 PMF。加载过程中的中止已经编码,所以不用担心。我很想了解导致 Microsoft 进行此更改的安全风险是什么。屏幕保护程序现在是否隐含地被视为锁定屏幕?这从来都不是这个应用程序的意图。 我只能猜测,但我会说是的,这可能就是原因。但 google 可能会帮助您找到做出此更改的原因。 【参考方案1】:

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

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

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

这是做什么的:

开始全屏屏保预览(在win8下有效)并等待 在用户操作锁定屏幕上显示并提示用户输入密码

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

【讨论】:

【参考方案2】:

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

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

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

此处通过 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 文件等;

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

【讨论】:

以上是关于屏幕保护程序如何在 Windows 8 中继续在桌面上绘图?的主要内容,如果未能解决你的问题,请参考以下文章

/p 预览模式中的屏幕保护程序在desk.cpl 关闭后继续运行

Windows 8 Metro 应用程序键盘位置更改

如何以编程方式在 Windows 8 和 Windows 10 桌面登录屏幕上显示状态栏? [关闭]

vs2015 windows服务怎么安装

使用 C++ 在 Windows 8 中无需固定到“开始”屏幕的应用快捷方式

在 WPF 中重新排列列表框项目(如 Windows 8 开始屏幕磁贴)