2

Я работаю в течение 12 часов, и я хотел бы сделать себе заставку, которая будет показывать

«Идем домой через $ время»

где $time - текущее окончание смены - текущее время.

Возможно ли что-то подобное?

3 ответа3

2

Windows Screensaver - это, по сути, просто исполняемые файлы с расширением .scr, для этого достаточно написать программу на C или C++.

1

Этот VBScript автоматически обновит текст заставки 3D-текста за оставшееся до окончания смены время. Сохраните следующий текст в файле с именем UpdateScreensaver.vbs и измените строку с 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 и снова начнет обратный отсчет. Чтобы компенсировать это, я добавил хак, чтобы, если оставшиеся часы были больше 20, он сообщал: «Сдвиг!».

Наслаждаться.

1

Я обнаружил, что вместо использования Visual Studio есть другие способы, такие как сценарии в AutoIT.

Перейдите в раздел «Загрузки» на веб-сайте. Это также не требует членства. Перейдите к загрузке для кодировщика и компилятора приложений AutoIT и т.д. Затем найдите на странице загрузок, я думаю, что это как раз. В разделе, как и на 3-й странице, есть ветка «ScreenSaver Demo - Matrix Inclusive», которая содержит исходный код, а также пример для сборки.

Таким образом, вы открываете компилятор, вставляете скрипт (даже создаете свой собственный значок), нажимаете «Компилировать» (убедитесь, что скрипт не находится в том же каталоге, где вы хотите разместить .exe).

Скомпилируйте его, и он создаст файл .exe по вашему выбору, т.е. Matrix. Затем вы переименовываете в расширение .scr и помещаете его в папку system32, и оно будет отображаться в настройках, когда вы перейдете к персонализации -> заставки. В первый раз, когда я запустил его, он не понравился и не позволял мне выбирать параметры, хотя после перезагрузки он работает без нареканий.

Информацию о том, как это было скомпилировано, смотрите в ветке AutoIT под названием Screensaver UDF.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .