Создайте каждый 2-часовой таймер и отобразите окно сообщения - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь создать программу, которая будет выдавать сигнал каждые 2 часа, и будет отображаться окно с сообщением

Ответы [ 3 ]

1 голос
/ 10 ноября 2019

Другой вариант - установить переменную уровня модуля на текущее время + два часа (Now + (2.0 / 24.0)), а затем проверить прерывание по таймеру, чтобы узнать, больше ли текущее время, чем это сохраненное значение.

0 голосов
/ 09 ноября 2019

Вы также можете использовать планировщик заданий для запуска VBScript, который отображает ваше сообщение. Вам просто нужно создать задачу с триггером, который повторяется каждые 2 часа, бесконечно.

VBScript может отображать время:

MsgBox "It's now " & FormatDateTime(Now, vbShortTime)
0 голосов
/ 09 ноября 2019

Вы можете использовать элемент управления Timer для этого, но вы не сможете напрямую установить интервал на 7200000. Вы можете установить интервал на 60000 (и установить для свойства Enabled значение True) и иметь переменную, которая подсчитываетПрошедшие минуты:

Dim iMinutesElapsed As Integer

Private Sub Timer1_Timer()
    iMinutesElapsed = iMinutesElapsed + 1
    If iMinutesElapsed = 120 Then
        DoAlarm
        iMinutesElapsed = 0
    End If
End Sub

Private Sub DoAlarm()
    MsgBox "2 hours have gone by."
End Sub

Лучше всего сохранить переменную со значением функции Timer и проверить, сколько времени прошло с тех пор, как вы вызвали Start. При таком подходе установите Интервал Timer1 равным 1000 и Enabled в False, метод Start включит Timer1 для вас:

Dim sngStart As Single

Public Sub Start()
    sngStart = Timer
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    Dim sngElapsedTime As Single

    sngElapsedTime = Timer - sngStart
    If sngElapsedTime < 0 Then
        ' Clock passed midnight
        sngElapsedTime = (86400 - sngStart) + Timer
    End If

    If sngElapsedTime > 7200 Then ' counting seconds with this code
        sngStart = Timer ' Restart
        DoAlarm
    End If

End Sub

Наконец, решение, которое будет запускаться каждый нечетный час на минуте 30, как описанов комментариях:

Private Sub Timer1_Timer()
    If Hour(Now) Mod 2 = 1 And Minute(Now) = 30 Then
        DoAlarm
    End If
End Sub
...