Visual Basic - Evento a determinada hora

Life is soft - evento anual de software empresarial
 
Vista:

Evento a determinada hora

Publicado por Juan (18 intervenciones) el 22/08/2006 18:01:16
Me hice una aplicación que es un despertador. Es un form donde se carga la hora/minuto y se elige una canción para que suene. Funciona bien.

La manera en que programe el evento de "sonar el despertador" es del tipo Timer (no use el control, sino código). Lo que hace es restar la hora programada a la hora actual, calcular el numero de segundos, empezar a contar los segundos transcurridos y al llegar al total, se ejecuta la canción (identico al control Timer).

Lo que quiero hacer es que no dependa del "nº de seg calculado" sino de la hora real del sistema. No se como programa un evento que chequee la hora y la compare con la programada. El método actual falla por ejemplo, si cambio la hora del sistema, el despertador sonará cuando se cumplan los X segundos, independientemente si la hora real es la programada para sonar o no.

En VBA utilizaba la función "Ontime" pero en VB 6.0 no la puedo hacer andar.

Espero que se haya entendido. He leído cientos de post sobre timer y otros, pero no he encontrado lo que quiero.

Saludos
Juan

Este es el código actual (usa una API)

Public Declare Function SetTimer Lib "user32" ( _
ByVal hwnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" ( _
ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public TimerID As Long
Public TimerSeconds As Single
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub temporal(hora_prog, cancion, activa)

StartTimer (hora_prog)
If activa = 0 Then
Form1.Label3.Caption = Empty
Form1.Label4.Caption = Empty
Form1.Option1 = False
Form1.Option2 = False
EndTimer
End If

End Sub

Sub StartTimer(hora_prog)
hora_act = Time
If hora_act > hora_prog Then
dif = TimeValue("23:59:59") - hora_act
hora_prog = hora_prog + dif
hora_act = TimeValue("00:00:00")
End If
tiempo_rest = (hora_prog - hora_act) * 60 * 60 * 24
TimerSeconds = tiempo_rest ' how often to "pop" the timer.
TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
End Sub

Sub EndTimer()
On Error Resume Next
KillTimer 0&, TimerID
End Sub

Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, _
ByVal nIDEvent As Long, ByVal dwTimer As Long)

' The procedure is called by Windows. Put your
' timer-related code here.

cancion = Form1.Label4

ShellExecute 0, "open", cancion, "", "", 1
Form1.Label3.Caption = Empty
Form1.Option1 = False

EndTimer

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Evento a determinada hora

Publicado por pic16f84 (1 intervención) el 22/08/2006 18:14:00
if format(time,"HH:mm")="20:32" then
msgbox "es la hora"
end if

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Evento a determinada hora

Publicado por Juan (18 intervenciones) el 22/08/2006 22:51:06
Lo que quiero es programa la hora y que a la hora programada me ejecute la acción. Sería como la funcion "application.ontime " en VBA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar