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