Este VBScript atualizará automaticamente o texto do protetor de tela de Texto 3D com o tempo restante antes de seu turno terminar. Salve o seguinte texto em um arquivo chamado UpdateScreensaver.vbs e modifique a linha com FINISH_TIME
para ter o horário final correto:
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
Agora clique duas vezes no arquivo para executá-lo e nada deve acontecer. Isso é bom. Agora vá e confira as configurações do protetor de tela de Texto 3D e você verá que ele mostra as horas restantes antes de seu turno terminar.
Tudo que você precisa fazer agora é configurar uma tarefa agendada para executar isso a cada 15 minutos (ou mais) e seu protetor de tela será mantido atualizado com o número de horas restantes.
Algumas notas:
- Parece que se a hora for atualizada enquanto o protetor de tela estiver sendo executado, o protetor de tela não será atualizado até a próxima execução. Eu não posso fazer nada sobre isso.
- Existe um limite de 20 caracteres com este protetor de tela, portanto, o texto mais curto.
- Se você quiser usar outro protetor de tela, precisará descobrir onde ele armazena a string que contém a mensagem no registro e alterar a linha com
REGISTRY_KEY
para corresponder a esse local. - Porque ele assume o turno de trabalho, assim que o seu turno terminar, o número de horas restantes será revertido para 24 e a contagem regressiva novamente. Para compensar isso, adicionei um hack para que, se as horas restantes forem maiores que 20, ele declare "Shift over!".
Aprecie.