Ошибка VBS Переполнение: 'WScript.Sleep'.Скрипт для Будильника - PullRequest
0 голосов
/ 04 июня 2018

Я написал это, и я продолжаю получать одни и те же ошибки, и я не знаю, почему, но в тестовом файле VBS он работает нормально?

Что он должен сделать, это взять номер так, чтобы 9 утра вы 'd введите 9 и преобразуйте его в секунды, затем прибавьте к времени, которое потребуется для перехода к полуночи, взяв текущее время в секундах от 86400, что составляет 24 * 60 * 60.Математика проверяется, я просто не понимаю, что означает эта ошибка или может обнаружить ошибку.

Вот тест, который работает.

Dim sglTimer

usertime = InputBox("What time? (in hours from 12)")
usersectime = usertime * 60 * 60
sglTimer = timer
tf = 86400
timeaway = tf-timer
totimeaway = usersectime + timeaway
mstotimeaway = totimeaway * 1000
WScript.Sleep mstotimeaway
MsgBox("woop")

А вот что должно бытьполностью работоспособен, но я продолжаю получать эту ошибку сна.

Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim sglTimer
Dim batName
Dim statusCode
Dim returntext
Dim isitok
Dim usertime
Dim usersectime
Dim tf
Dim timeaway
Dim totimeaway
Dim mstotimeaway

returntext = InputBox("What time do you wish to wake up at", "How long?", "60", 150, 150)

If IsNumeric(returntext) Then
    isitok = MsgBox("Is " & returntext & " minuites OK?", vbOKCancel)
    returntext = returntext * 1000 * 60
    If isitok = 1 Then
        usertime = returntext
        usersectime = usertime * 60 * 60
        sglTimer = timer
        tf = 86400
        timeaway = tf-timer
        totimeaway = usersectime + timeaway
        mstotimeaway = totimeaway * 1000
        MsgBox("Started coutdown, in the background.")
        WScript.Sleep mstotimeaway

        WshShell.SendKeys("^{Esc}")
        WScript.Sleep 1000
        WshShell.SendKeys("chrome")
        WScript.Sleep 2000
        WshShell.SendKeys("{Enter}")
        WScript.Sleep 10000
        WshShell.SendKeys("https://www.youtube.com/watch?v=VRDEWANy6P8")
        WScript.Sleep 1000
        WshShell.SendKeys("{Enter}")
        WScript.Sleep 1000
    Else
        batName = "C:\Users\The_SUDO\Desktop\ALARM!!!.vbs"
        statusCode = WshShell.Run(batName, 1, True)
    End If
Else
    batName = "C:\Users\The_SUDO\Desktop\ALARM!!!.vbs"
    statusCode = WshShell.Run(batName, 1, True)
End If

1 Ответ

0 голосов
/ 04 июня 2018

В своем коде вы дважды преобразуете пользовательский ввод:

returntext = returntext * 1000 * 60
usertime = returntext
usersectime = usertime * 60 * 60

WScript.Sleep имеет максимальное значение в зависимости от версии хоста сценария.Вероятно, вы превысите этот максимум, умножившись на 1000 дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...