Como criar uma proteção de tela personalizada no Windows 7 - com o tempo e o texto calculado?

2

Eu trabalho por turnos de 12 horas e gostaria de fazer um protetor de tela que mostre

"Going home in $time"

em que $time é o atual final da mudança - hora atual.

É algo assim possível?

    
por Patryk 20.03.2012 / 23:42

3 respostas

1

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:

  1. 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.
  2. Existe um limite de 20 caracteres com este protetor de tela, portanto, o texto mais curto.
  3. 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.
  4. 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.

    
por 10.06.2012 / 21:35
2

O Windows Screensaver é basicamente apenas executáveis com a extensão .scr, escreva um programa em C ou C ++ para isso, bastante simples o suficiente.

    
por 21.03.2012 / 05:21
1

Descobri que, em vez de usar o Visual Studio, há outras maneiras de criar scripts no AutoIT.

Vá para a seção Downloads no site. Não requer associação também. Ir para o download para o codificador e compilador de aplicativos AutoIT etc. Em seguida, pesquise na página de downloads Eu acho que é como o misc. seção e como a terceira página em há um segmento chamado "ScreenSaver Demo - Matrix Included" que contém o código-fonte, bem como um exemplo para você construir.

Para abrir o compilador, insira o script (até mesmo crie seu próprio ícone), clique em Compilar (certifique-se de que o script não esteja no mesmo diretório que o local onde deseja colocar o arquivo .exe).

Compile e crie um arquivo .exe de sua escolha de juba, ou seja, Matrix. Então você renomeie a extensão .scr e solte-a na pasta system32 e ela aparecerá nas opções quando você for personalizar - > protetores de tela. A primeira vez que eu corri, não gostei e não me deixou clicar em opções, mas depois de reiniciar ele funciona perfeitamente.

Para obter informações sobre como ele foi compilado, consulte o tópico nos fóruns do AutoIT chamado Screensaver UDF.

    
por 28.05.2012 / 04:58