Page 1 of 1

réduire le temps d'attendre

Posted: 03 Apr 2017, 16:19
by Heukayothe
Bonjour,
Je souhaiterais écrire mon code de façon à lancer créer un délai (analogue à sleep), mais que je puisse sauter en appuyant sur une touche, c'est à dire, j'ai beau chercher et essayer de nombreuse méthodes je n'y arrive pas du tout ... Merci d'avance !

Re: réduire le temps d'attendre

Posted: 04 Apr 2017, 08:26
by A_AhkUser
Salut,

Je suis pas sûr que c'est la meilleure solution mais tu peux par exemple créer une variable (ici interrompre), laquelle est évaluée après un sleep de 10ms par un while loop de temps_imparti/10 (en ms) tours.
Si cette variable change de valeur durant l'exécution du Loop celui-ci s''interrompt avant d'atteindre le temps imparti.

Code: Select all

!i:: ; ALT+I
interrompre := false
i := 0
MsgBox, Un nouveau MsgBox apparaîtra dans 4 secondes à moins que n'appuies sur les touches ALT+X entre deux.
While (not interrompre and ++i < 400) { ; 400*10 == 4000ms == 4 secondes 
sleep, 10
}
MsgBox, test
return

!x:: ; ALT+X
interrompre := true
return
ou encore:

Code: Select all

!i:: ; ALT+I
interrompre := false
i := 0
MsgBox, Un nouveau MsgBox apparaîtra dans 4 secondes à moins que n'appuies sur les touches ALT+X entre deux.
While (not interrompre and ++i < 40) { ; 40*100 == 4000ms == 4 secondes 
sleep, 100
}
MsgBox, test
return

!x:: ; ALT+X
interrompre := true
return
Personnellement si j'étais toi, j'opterais pour le second étant donné qu'il loop moins et à intervalles plus longues (pourvu du moins que tu ne sois pas à quelque dizaine de millisecondes près, ce qui est peut être le cas bien sûr).

Re: réduire le temps d'attendre

Posted: 04 Apr 2017, 11:52
by Paneb
Yop !

Ma proposition sinon (moins de timer, mais un label) :

Code: Select all

!i:: ; ALT+I
MsgBox, Un nouveau MsgBox apparaîtra dans 4 secondes à moins que n'appuies sur les touches ALT+X entre deux.
SetTimer, mesActions, 4000
Return

!x:: ; ALT+X
mesActions:
SetTimer, mesActions, Off
MsgBox, test

Re: réduire le temps d'attendre

Posted: 04 Apr 2017, 14:39
by A_AhkUser
Paneb wrote:Yop !

Ma proposition sinon (moins de timer, mais un label) :

Code: [Tout sélectionner] [Download] GeSHi © Codebox Plus

!i:: ; ALT+I
MsgBox, Un nouveau MsgBox apparaîtra dans 4 secondes à moins que n'appuies sur les touches ALT+X entre deux.
SetTimer, mesActions, 4000
Return

!x:: ; ALT+X
mesActions:
SetTimer, mesActions, Off
MsgBox, test
Quand je disais que "Je suis pas sûr que c'est la meilleure solution", je soupçonnais qu'il y avait une solution plus pertinente... Ta solution avec SetTimer est
plus intuitive.

Re: réduire le temps d'attendre

Posted: 05 Apr 2017, 02:58
by Paneb
Je me suis déjà retrouvé face au problème, donc la solution ne m'était pas étrangère :D.
Par contre le problème du Timer c'est qu'il se répète par défaut, faut pas zapper le off (une boucler for à au moins le mérite dans tous les cas de ne s’exécuter qu'une fois ^^).

Re: réduire le temps d'attendre

Posted: 05 Apr 2017, 21:58
by joedf
pour que ca ne répète pas il faut simplement mettre un délais négatif.
SetTimer, mesActions, -4000