gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:25:23 24 4
gpt4 key购买 nike

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

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

最佳答案

关于 win8 中这个笨拙的设计决定,我遇到了类似的问题。我最终不得不妥协,但我会在有时间的时候继续寻找防弹解决方案。

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

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

它的作用是:

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

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

关于c# - 屏幕保护程序如何在 Windows 8 中继续在桌面上绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com