如何在 Windows 7 中制作自定义屏幕保护程序 - 带有时间和计算文本?

如何在 Windows 7 中制作自定义屏幕保护程序 - 带有时间和计算文本?

我每天工作 12 小时,我想制作一个屏幕保护程序,显示

“$time 回家”

其中$time,当前轮班结束时间 - 当前时间。

这样的事情可能吗?

答案1

此 VBScript 将自动更新 3D 文本屏幕保护程序文本,其中包含班次结束前的剩余时间。将以下文本保存在名为更新屏幕保护程序并修改该行以FINISH_TIME获得正确的结束时间:

Option Explicit
'
' Simple vbscript to update the 3D Text screensaver with
' the number of hours left before a shift finishes.
'
' FINISH_TIME is the 24-hour time when you finish. 
Const FINISH_TIME = "21:15:00"
' REGISTRY_KEY is the key to update with the time. This will be
' different if you aren't using the 3D text screensaver.
Const REGISTRY_KEY = "HKCU\Software\Microsoft\Windows\CurrentVersion\Screensavers\ssText3d\DisplayString"
' You don't need to change anything below here!
' ==============================================================
Dim iHours, iMins, sMessage, sUnit
iMins = DateDiff("n", Now(), FormatDateTime(Now(), 2) & " " & FINISH_TIME)
If iMins < 0 Then
    ' Assuming shift work - so the finish time is tomorrow, not today.
    iMins = DateDiff("n", Now(), FormatDateTime(DateAdd("d", 1, Now()), 2) & " " & FINISH_TIME)
End If
iHours = Int(iMins / 60) : iMins = iMins Mod 60
If iHours > 20 Then
    sMessage = "Shift over!"
Else
    If iHours > 0 Then
        sMessage = iHours
        If iMins > 45 Then
            sMessage = sMessage & Chr(190) & " hours"
        ElseIf iMins > 30 Then
            sMessage = sMessage & Chr(189) & " hours"
        ElseIf iMins > 15 Then
            sMessage = sMessage & Chr(188) & " hours"
        ElseIf iHours > 1 Then
            sMessage = sMessage & " hours"
        Else
            sMessage = sMessage & " hour"
        End If
    Else
        sMessage = sMessage & iMins & " minute"
        If iMins <> 1 Then sMessage = sMessage & "s"
    End If
    sMessage = sMessage & " to go!"
End If
Dim wsh : Set wsh = CreateObject("WScript.Shell")
wsh.RegWrite REGISTRY_KEY, sMessage
Set wsh = Nothing

现在双击该文件运行它,什么也不会发生。这很好。现在去检查 3D 文本屏幕保护程序的设置,你应该看到它显示了你的班次结束前剩余的小时数。

您现在需要做的就是设置一个计划任务,每 15 分钟(左右)运行一次,这样您的屏幕保护程序就会随时更新剩余的小时数。

一些说明:

  1. 看起来如果在屏幕保护程序运行时更新了时间,那么屏幕保护程序直到下次运行时才会更新。我对此无能为力。
  2. 此屏幕保护程序有 20 个字符的限制,因此文本较短。
  3. 如果您想使用另一个屏幕保护程序,则需要找出它在注册表中存储包含消息的字符串的位置,并更改行以REGISTRY_KEY匹配该位置。
  4. 因为它假设轮班工作,所以一旦你的轮班结束,剩余的小时数就会倒转回 24 并再次倒计时。为了弥补这一点,我添加了一个 hack,这样如果剩余小时数大于 20,它就会显示“轮班结束!”。

享受。

答案2

Windows 屏幕保护程序基本上只是带有 .scr 扩展名的可执行文件,用 C 或 C++ 编写一个程序,非常简单。

答案3

我发现除了使用 Visual Studio 之外,还有其他方法,例如在 AutoIT 中编写脚本。

转到网站上的下载部分。它也不需要会员资格。转到下载 AutoIT 应用程序编码器和编译器等。然后在下载页面上搜索,我认为它就像杂项部分,就像第 3 页一样,其中有一个名为“屏幕保护程序演示 - 包含矩阵”其中包含源代码以及供您构建的示例。

因此,您打开编译器,插入脚本(甚至创建自己的图标),单击编译(确保脚本与您想要放置.exe 的位置不在同一目录中)。

编译它,它会创建一个您选择的 .exe 文件,即 Matrix。然后将其重命名为 .scr 扩展名并将其放入 system32 文件夹中,当您转到个性化 -> 屏幕保护程序时,它将显示在选项中。我第一次运行它时,它不喜欢它,不让我点击选项,但是重新启动后它就可以完美地运行了。

有关如何编译的信息,请查看AutoIT 论坛中的主题称为屏幕保护程序 UDF。

相关内容