Page 1 sur 1
[R] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 03:37
par Mikaas
Bonjour encore moi
Voila un autre souci mineur
Je souhaiterai savoir comment stopper une action sans arrete totalement le script en cours...
► Afficher le texte
Code : Tout sélectionner
HotKeySet("{F1}", "START")
Func START()
While 1
MON SCRIPT
WEnd
EndFunc ;==>START
J'appuy sur F1 mon action commence
je cherche la formule pour arreter l'action apres avoir de nouveau appuyé sur F1
sans fermer par "
exit" que je puisse appuy encore sur F1 plutart pour le relancer...
j'ai essayé avec Do...Unstil j'ai pas réussi
Merci a vous

Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 04:23
par orax
J'ai fait ça comme ça :
Code : Tout sélectionner
Global $a=False
HotKeySet("{F1}", "START")
While 1
Sleep(10)
WEnd
Func START()
If $a Then
$a=False
Return
Else
$a=True
EndIf
While $a
ConsoleWrite(Random(1,10000,1)&@LF)
Sleep(1)
WEnd
EndFunc ;==>START
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 06:18
par Mikaas
Merci mais a défaut de paraitre stupid je ne vois pas trop ou mettre mon script sachant que jai beaucoup d'autre action j'aurai plutot voulu une func propre a elle meme si c'etait possible ou y incluant "Mon script" histoire de m'y retrouver.
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 09:32
par Tlem
Tirez et adapté d'un exemple du forum, il est possible de faire quelque chose dans ce genre :
► Afficher le texte
Code : Tout sélectionner
Global $Pause = 0, $ToggleFlag = 0
HotKeySet("{F6}", "TogglePause")
; ...
; Votre code
; ...
Func TogglePause()
If $Pause = 0 Then
$ToggleFlag = 1
$Pause = 1
TrayTip('', 'Script Activé', 3)
Return
Else
$Pause = 0
TrayTip('', 'Script en pause', 3)
While 1
Sleep(200)
If $ToggleFlag = 1 Then
$ToggleFlag = 0
ExitLoop
EndIf
WEnd
EndIf
EndFunc
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 11:13
par Mikaas
il me fait bien les traytip mais pas la pause peu etre un souci dans le reste de mon code ?
► Afficher le texte
Code : Tout sélectionner
Global $Pause = 0, $ToggleFlag = 0
HotKeySet("{END}", "TERMINER")
HotKeySet("{F6}", "TogglePause")
HotKeySet("{F1}", "SPAM1")
HotKeySet("{F2}", "SPAM2")
Func TERMINER()
Exit 0
EndFunc ;==>TERMINER
Func TogglePause()
If $Pause = 0 Then
$ToggleFlag = 1
$Pause = 1
TrayTip('', 'Script Activé', 3)
Return
Else
$Pause = 0
TrayTip('', 'Script en pause', 3)
While 1
Sleep(200)
If $ToggleFlag = 1 Then
$ToggleFlag = 0
ExitLoop
EndIf
WEnd
EndIf
EndFunc
$C1 = IniRead(@ScriptDir & "/CONFIG.ini", "SETTINGS", "MESSAGE1", 0)
$C2 = IniRead(@ScriptDir & "/CONFIG.ini", "SETTINGS", "MESSAGE2", 0)
$T1 = IniRead(@ScriptDir & "/CONFIG.ini", "SETTINGS", "TEMPS", 0)
$T2 = IniRead(@ScriptDir & "/CONFIG.ini", "SETTINGS", "DELAI", 0)
Func MANUEL1()
If $C1 = "none" Then
MANUEL2()
Else
Send($C1)
Send("{ENTER}")
Sleep(100 * $T1)
EndIf
EndFunc ;==>MANUEL1
Func MANUEL2()
If $C2 = "none" Then
MANUEL1()
Else
Send($C2)
Send("{ENTER}")
Sleep(100 * $T1)
EndIf
EndFunc ;==>MANUEL2
Func SPAM1()
While 1
MANUEL1()
MANUEL2()
Sleep(1000 * $T2)
WEnd
EndFunc ;==>SPAM1
Func SPAM2()
MANUEL1()
MANUEL2()
EndFunc ;==>SPAM2
While 1
Sleep(100)
WEnd
ou peu etre que l'ordre des phrases sont importantes non ?
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 11:53
par Tlem
Pourquoi dites-vous qu'il ne fait pas la pause ?
Sans doute parce que si vous appuyez sur F1 ou F2 le code s'effectue.
Hé bien c'est tout à fait normal puisque votre code est assujettit aux
HotKeySet.
La pause ne fonctionne que pour le reste du code et en l'occurrence il s'agit de la boucle
While principale.
Si votre but est de désactiver l'utilisation de F1 et F2 et au vue de votre code, vous devez ajouter l'activation/la désactivation des
HotKeySet dans la fonction
TogglePause() en remplacement de la boucle
While et de la gestion de
$Flag.
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 12:55
par Mikaas
Mikaas a écrit :
J'appuy sur F1 mon action commence
je cherche la formule pour arreter l'action apres avoir de nouveau appuyé sur F1
sans fermer par "exit" que je puisse appuy encore sur F1 plutart pour le relancer...
je sais pas si je m'etais mal exprimé désolé
mon but etant de lancer mon action en appuyant sur F1 (l'action se produit en boucle) puis arreter cette boucle par l'appuye de la touche F1 de nouveau sans pour autant arreter le script totalement ( dont Exit ).
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 13:15
par Tlem
Dans l'état de votre script, cela n'est pas possible.
Lorsque celui-ci fait la pause (Sleep(100 * $T1)) il ne fera rien d'autre.
Sinon rajoutez après la pause une détection de l'état (en pause ou non) afin de faire l'action correspondante.
Re: [..] Stopper une action sans fermer le script
Posté : mer. 16 déc. 2009 13:29
par Mikaas
arf satané sleep
je vais essayer de trouver ça merci 