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.
Aquí dejo la línea de código con sus comentarios para que os hagáis una idea de como voy.
Código
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
Código
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...
Código
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