Как сделать пользовательскую заставку в Windows 7 - со временем и просчитанным текстом?
Я работаю в течение 12 часов, и я хотел бы сделать заставку, которая будет показывать
"Идем домой через $ время"
где $time
текущее окончание смены - текущее время.
Возможно ли что-то подобное?
3 ответа
Этот 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 минут (или около того), и ваша заставка будет обновляться с учетом количества оставшихся часов.
Некоторые заметки:
- Похоже, что если время обновляется во время работы заставки, то заставка не обновляется до следующего запуска. Я ничего не могу с этим поделать.
- У этой заставки ограничение в 20 символов, следовательно, более короткий текст.
- Если вы хотите использовать другую заставку, то вам нужно выяснить, где она хранит строку, содержащую сообщение в реестре, и изменить строку на
REGISTRY_KEY
чтобы соответствовать этому месту. - Поскольку это предполагает сменную работу, как только ваша смена завершится, количество оставшихся часов вернется к 24 и снова начнет обратный отсчет. Чтобы компенсировать это, я добавил хак, чтобы, если оставшиеся часы были больше 20, на нем было указано "Shift over!".
Наслаждаться.
Windows Screensaver - это, по сути, просто исполняемые файлы с расширением.scr, для этого достаточно написать программу на C или C++.
Я обнаружил, что вместо использования Visual Studio есть другие способы, такие как сценарии в AutoIT.
Перейдите в раздел "Загрузки" на веб-сайте. Это также не требует членства. Перейдите к загрузке для кодировщика и компилятора приложения AutoIT и т. Д. Затем выполните поиск на странице загрузок, я думаю, что это как раз. В разделе, как и на 3-й странице, есть ветка "ScreenSaver Demo - Matrix Inclusive", которая содержит исходный код, а также пример для сборки.
Итак, вы открываете компилятор, вставляете скрипт (даже создаете свой собственный значок), нажимаете "Компилировать" (убедитесь, что скрипт не находится в той же директории, где вы хотите разместить.exe).
Скомпилируйте его, и он создаст файл.exe по вашему выбору, т.е. Matrix. Затем вы переименовываете в расширение.scr и помещаете его в папку system32, и оно будет отображаться в настройках, когда вы перейдете к персонализации -> заставки. В первый раз, когда я запустил его, он не понравился и не позволял мне выбирать параметры, хотя после перезагрузки он работает без нареканий.
Информацию о том, как это было скомпилировано, смотрите в ветке форума AutoIT под названием Screensaver UDF.