Page 1 sur 1

[R] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : lun. 14 sept. 2015 12:48
par macflyth
Bonjour a tous,

Je ne connais pas très bien Autoit, je suis plus que débutant et ne trouve pas de réponse (en français).
J'aurais besoin d'un petit coup de main, mon script ne tourne que une seul fois.
J'aimerais qu'il tourne jusqu’à ce que je click sur le bouton stop.
Le bouton stop ferme également la fenêtre, je souhaiterais que elle reste ouverte, est-ce possible?

Il doit répéter l'action toute les 5 minutes...
Pouvez-vous m'aidez svp?

Voici mon script :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$GUI = GUICreate("GUI", 200, 100, 200, 130)
$Bouton1 = GUICtrlCreateButton("Start", 5, 5, 190, 25)
$Bouton2 = GUICtrlCreateButton("Stop", 5, 35, 190, 25)
GUISetState(@SW_SHOW)

While 1
   $msg = GUIGetMsg()
   Switch $msg
      Case $Bouton1
   MouseClick("left", 1231, 601, 1, 5)
   sleep(2500)
   MouseClick("left", 1232, 611, 1, 5)
   sleep(2500)
   MouseClick("left", 841, 786, 1, 5)
   sleep(302000)
      Case $Bouton2
         Exit
   EndSwitch
WEnd

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : lun. 14 sept. 2015 13:19
par TomAijerrie
Bonjour,

Premièrement, pense à utiliser les balises [code][/code] pour encadrer ton code.
Que veux tu dire par "tourner en boucle" ?
Il doit se relancer une fois terminé ?

Note que après avoir fait une série de trois clics, ton code fait une pause de 5 minutes et deux secondes,
pendant lesquelles ton programme ne fait rien (il ne regarde pas si l'utilisateur a cliqué sur tel ou tel bouton...)

Quand tu appuis sur le bouton Stop, tu ferme le programme, il est normal que ta fenêtre se ferme.
Quelle doit être l'action quand tu appuis sur ce bouton ?


Quel est l'objectif de ces trois clics ? Il y a peut-être une meilleure solution pour la tempo.

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : lun. 14 sept. 2015 13:35
par macflyth
Bonjour et merci,

Je ne connais pas les balise [ code=text], je suis vraiment débutant (d'hier soir)
Je souhaite que le script reprenne une fois la pause de 5min au début.

La mon script ne reprend pas après les 5 minutes.

J'aimerais que le bouton stop soit un bouton pause, que le script attende que je click sur lancer pour reprendre du début si j'ai clicker sur stop.

Donc en gros

Start

click
click
click

pause 5 min
reprend du début

option pause si je click et reprend au début si je clique start, sinon continue.

Simplement cliquer a l'endroit demander et recommencer une fois le délais atteins.

edit

J'ai tester simplement ceci

Code : Tout sélectionner

while 1
MouseClick("left", 1231, 601, 1, 5)
sleep(2500)
MouseClick("left", 1232, 611, 1, 5)
sleep(2500)
MouseClick("left", 841, 786, 1, 5)
sleep(10000)
Wend
Mais rien ne reprend

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : lun. 14 sept. 2015 13:41
par TomAijerrie

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$GUI = GUICreate("GUI", 200, 100, 200, 130)
$Bouton1 = GUICtrlCreateButton("Start", 5, 5, 190, 25)
$Bouton2 = GUICtrlCreateButton("Stop", 5, 35, 190, 25)
GUISetState(@SW_SHOW)

While 1
   $msg = GUIGetMsg()
   Switch $msg
      Case -3
         Exit
      Case $Bouton1
         While 1
            MouseClick("left", 1231, 601, 1, 5)
            sleep(2500)
            MouseClick("left", 1232, 611, 1, 5)
            sleep(2500)
            MouseClick("left", 841, 786, 1, 5)
            For $i = 1 to 30000
               sleep(10)
               $msg = GUIGetMsg()
               Switch $msg
                  Case -3
                     Exit
                  Case $Bouton1
                     ExitLoop
                  Case $Bouton2
                     ExitLoop 2
               EndSwitch
            Next
         Wend
   EndSwitch
WEnd
La pause sera d'un peu plus que cinq minutes, mais pas de beaucoup

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : lun. 14 sept. 2015 14:17
par macflyth
Merci Tom,

Mais le script ne reprend pas tout seul après 5 minutes :/
Je doit clicker sur start pour qu'il reprenne.

Peux tu m'expliquer se que j'ai fais comme erreur dans mon script svp? (avant ta correction)

Code : Tout sélectionner

For $i = 1 to 30000
il sert a quoi ce code?

Si cela simplifie les choses une simple commande clavier start et stop me convienne parfaitement pour démarrer et arrêter le script

Exemple :

CTRL+7 démarre

CTRL+8 l'arrête

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : lun. 14 sept. 2015 21:00
par parazitenew
Trêve de bavardage.

La meilleure manière de faire ce genre de script est d'utiliser AdlibRegister() et AdlibUnRegister()

Voici le bon script:
► Afficher le texte
Explication:

AdlibRegister enregistre en "mémoire" une fonction qu'il exécutera à intervalle défini, le AdlibUnRegister quant à lui supprime la fonction de cette "mémoire".

à chaque fois que tu cliqueras sur le bouton "Start", tu lances la fonction, le bouton "Stop" l'arrête jusqu'à ce que tu re-clique sur le bouton "Start" comme tu le voulais.

La fonction est définie en bas du script.

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : mar. 15 sept. 2015 19:17
par macflyth
Bonsoir,

Cela ne fonctionne toujours pas, lorsque je clique sur start rien ne se passe :/

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : mar. 15 sept. 2015 20:16
par parazitenew
Faut rajouter clique() avant le AdlibRegister()

Voilà:
► Afficher le texte

Re: [R] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : mer. 16 sept. 2015 07:41
par macflyth
Résolut , merci a tous :)

Re: [..] Mon scrip ne tourne pas en boucle, pourquoi?

Posté : mer. 16 sept. 2015 14:01
par jguinch
@macflyth : la bonne pratique est d'éditer le titre du premier message et remplacer [..] par [R] quand le problème est résolu.
Pour cette fois je le fais, merci de le faire à l'avenir.