Buenas noches a todos, ¡Mucho tiempo sin pasar por aquí!
Os cuento mi idea y mi problema.
Mi idea es:En el momento en el que la tecla adecuada es pulsada, inicia un contador, a los tres minutos suena un pitido, y si la tecla no es pulsada en los próximos quince segundos,
vuelve a sonar el pítido en intervalos de quince segundos, así hasta que la tecla es pulsada, y una vez más empezaría a esperar 3 minutos para después seguir con los 15 segundos.
Dejo una imagen con un esquema que acabo de hacer para que se entienda mejor el ejemplo.
(https://fotos.subefotos.com/77f49d513d0810f8d9e613a697b7a025o.png)
Aquí dejo la línea de código con sus comentarios para que os hagáis una idea de como voy.
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim Ascii As Integer = Asc(My.Settings.optionsHotkeys) ' Esa variable contiene el ascii de la tecla guardada por el usuario.
If (GetAsyncKeyState(Ascii)) Then ' Si es presionada...
...
Aquí no tengo idea de cómo seguir de una manera correcta, sin hacer chapuzas, sólo se me ocurrió meter más timers del estilo
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim Ascii As Integer = Asc(My.Settings.optionsHotkeys) ' Esa variable contiene el ascii de la tecla guardada por el usuario.
If (GetAsyncKeyState(Ascii)) Then ' Si es presionada...
Timer2.Start()
Timer2.Interval = NumericUpDown1.Value * 60 * 1000 'Minutos estupilados por el usuario.
End if
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
... 'Pitido
Timer3.Start()
Timer3.Interval = 15000 'Intervalo de 15 segundos
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
... 'Pitidos cada 15 segundos...
En fin, cómo veis aquí pierdo la cordura, no sé que hacer y me pongo a crear timers cuál imbécil a diestra y siniestra sin ningún tipo de sentido.
¿Alguna idea?
Edito:
Terminé solucionandolo de una forma que considero un tanto mediocre...
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim Ascii As Integer = Asc(My.Settings.optionsHotkeys)
If (GetAsyncKeyState(Ascii)) Then
Select Case Timer2.Enabled
Case False
Timer3.Start()
Timer3.Interval = NumericUpDown1.Value * 60 * 1000
Case True
Timer2.Stop()
Timer3.Start()
End Select
End If
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
Sound.Play()
End Sub
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
Sound.Play()
Timer2.Interval = 15000
Timer2.Start()
Timer3.Stop()
End Sub