Boucle infinie avec variable de temps

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
Répondre
Khaoss
Messages : 3
Enregistré le : 03 juil. 2015, 07:56

Boucle infinie avec variable de temps

Message par Khaoss » 03 juil. 2015, 09:11

Bonjour à tous, cela fais 2-3 semaine que j'utilise régulièrement super macro pour faire des cliques de souris et déplacement de souris avec une boucle GoTo, donc une macro très simpliste qui est utile pour mon jeu.

Hier j'ai voulu faire une macro qui utilise une variable de temps avec une boucle mais je n'ai pas trouvé comment faire.

Je vous explique ce que je voudrais faire :
-Une boucle infinie qui clique tous le temps et sans délai entre chaque clique(ca c'est ma macro de base que j'utilise tout le temps)
-Toutes les 5 minutes il faut que je clique a un autre endroit une seule fois
-Toutes les 45 minutes il faut que je clique encore a un autre endroit une seule fois
-Il faut que après avoir cliqué a minute et a 45 minutes je revienne sur ma boucle infinie de base

J'avais pensé que pour parer le temps vu que je ne trouvais pas cette possibilité, faire une variable qui compte dans ma boucle infinie par exemple 10000 ce qui pourrait éventuellement valoir en temps 5 minutes (j'ai pas vérifier c'est juste histoire de voir ce que ca donnait).

Je n'ai pas la possibilité de vous mettre la macro je ne suis pas chez moi.

Merci de m'avoir lu et j'espère avoir été assez clair.

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: Boucle infinie avec variable de temps

Message par Feitan » 03 juil. 2015, 10:23

Sinon tu mets les 3 macros en parallèles.

Macro 1 : Lancement de la macro 2 (clic toutes les 5 minutes)
Lancement de la macro 3 (clic toutes les 45 minutes)
Début des clics

Macro 2 :
Attendre 5 min
Clic

Macro 3 :
Attendre 45 min
Clic

Bon par contre ça risque de se chevaucher avec les clics et faire un résultat bizarre... Le mieux étant effectivement que utilise un nombre de boucle fixe mais les commandes ne s’exécutant pas exactement au même moment ça peut te faire un décalage.

Sinon il existe aussi un moyen de suivre le temps avec ScriptEval (aide section 2.4 il y a un exemple à télécharger)
2.4 Comment boucler une macro pendant un certain temps?

Solution : Il faut stocker dans une variable (<EndTime> dans l'exemple) l'heure de démarrage de la macro et ajouter le temps d'exécution que l'on souhaite. Ensuite avant d'exécuter la commande Goto, il faut tester si la <EndTime> est inférieur à l'heure actuelle.

Visualisation de l'exemple :

Variable <EndTime>;;Alpha;
ScriptEval VBScript;<EndTime>;DateAdd("n",1,now)
Label <Boucle>
Pause 00:00:01
ScriptEval VBScript;;DateDiff("s",now,<EndTime>) > 0
Goto <Boucle>
Message Message;Terminé;

Khaoss
Messages : 3
Enregistré le : 03 juil. 2015, 07:56

Re: Boucle infinie avec variable de temps

Message par Khaoss » 03 juil. 2015, 10:44

Merci d'avoir répondu rapidement, effectivement j'avais pas pensé à ouvrir plusieurs macro en parallèle car je ne savais pas que l'on pouvait -_-'
Je vais faire comme ça dans un premier temps et si il y a un problème je verrai comment faire et s'il y a un problème je vous solliciterais à nouveau.

Khaoss
Messages : 3
Enregistré le : 03 juil. 2015, 07:56

Re: Boucle infinie avec variable de temps

Message par Khaoss » 03 juil. 2015, 18:28

Alors en rentrant chez moi j'ai commencé par faire avec 3 fenêtre ouverte et ça me satisfait pas, j'ai donc fait avec le scripteval et c'est presque parfait, il y a juste le temps entre chaque fois où le programme va cliquer sur les 3 autres endroits et le temps où il va cliquer tout le temps au même endroit qui ne va pas. C'est beaucoup trop rapide, j'ai mis 5 mais ça fait toutes les 55 secondes environ. Il faut que je mette quoi pour faire 5 minutes svp?

Je vous mets mon script(il va vous paraître surement long pour ce qu'il faut faire mais ca fonctionne c'est le principal).

Variable <Temps1>;0;Alpha;
Label <Label2>
ScriptEval VBScript;<Temps1>;Dateadd("n",1,now)
Label <Label1>
Move Mouse 1578;471;Direct;ImgRef0;
Click Left click;
ScriptEval VBScript;<Temps1>;Datediff("s",now,<Temps1>) > 5
Goto <Label1>
Move Mouse 1445;848;Direct;ImgRef0;
Click Left click;
Pause 00:00:01
Move Mouse 1340;851;Direct;ImgRef1;
Click Left click;
Pause 00:00:01
Move Mouse 1858;845;Direct;ImgRef2;
Click Left click;
Calcul évolué <Temps1>=0
Goto <Label2>

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: Boucle infinie avec variable de temps

Message par Feitan » 04 juil. 2015, 11:01

Hello, la date sort dans le format suivant :

dd/mm/yyyy hh:mm:ss

Pour un contrôle parfait j'irais extraire les valeurs hh:mm:ss de la variable (grâce à la fonction "fonction" de supermacro)

Ensuite je mettrais ça dans 3 variables distinctes hh mm et ss

Tu ajoute 5 min à mm
Si mm > 60 alors mm=mm-60 et hh=hh+1

Ensuite tu recolle tes variables hh mm et ss sous la forme hh:mm:ss dans une variable <Temps+5> par exemple

Et tu compare <Temps+5> avec <Temps> sans oublier de mettre <Temps> au format hh:mm:ss

Je les mettrais même au format hh:mm (<Temps+5> et <Temps>) parceque ça va être dur de tomber pile poil sur la bonne seconde.

Voilà je te donne cette solution car le script que tu utilise est censé attendre 5 secondes (ou 50) étant donné que "s" signifie seconde
Pour les minutes il faudrait utiliser "m"
Puisque je n'ai jamais utiliser Datediff en VBScript je préfère te donner une solution compliquée (mais qui marche).

Par contre si tu veux rester sur l'idée du VBScritp (et je te comprends)

Essaye plutôt : ScriptEval VBScript;<Temps1>;Datediff("m",now,<Temps1>) > 5

Voici un peu comment VBScript fonctionne : http://www.w3schools.com/vbscript/func_datediff.asp et c'est pour ça que le fait que tu ai 55 secondes d'attente me parait bizarre.

Oula attends je relis ton code et en fait tu as 2 pauses de 1 seconde chacune, du coup ça va pas regarder toutes les secondes mais toutes les 2,3 secondes, du coup c'est possible que ça vienne de là (même si du coup on devrait être plus proche des 20,30 secondes d'éxécution)

Enfin essaye le ScriptEval que je t'ai passé, dis moi si ça marche, sinon lance toi dans ce que je t'ai envoyé qui fonctionnera à coup sur.

J'espère que j'ai été clair, je me perds assez vite dans ce que je dis :p

Bon courage !

JLO
Messages : 15
Enregistré le : 12 juin 2014, 14:28

Re: Boucle infinie avec variable de temps

Message par JLO » 10 sept. 2015, 06:43

Bonjour Feitan,

désolé, je continue sur le sujet de Khaoss vu que ça traite de la même chose et que tes réponses ont l'air de résoudre mon souci :)

J'en suis à cette étape-ci :
Tu ajoute 5 min à mm
Si mm > 60 alors mm=mm-60 et hh=hh+1

Mais je ne sais pas comment ni où l'écrire :(

Je n'arrive pas à mettre le signe + dans la variable, du coup je l'ai écrit en toute lettre :)

Merci pour ton aide.

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: Boucle infinie avec variable de temps

Message par Feitan » 13 sept. 2015, 11:46

Salut JLO, envoi ton script c'est plus simple.

goth62
Messages : 3
Enregistré le : 05 oct. 2015, 17:38

Re: Boucle infinie avec variable de temps

Message par goth62 » 19 oct. 2015, 13:55

Bonjour à tous,

j'ai besoin aide pour finir mon script


Code : Tout sélectionner

Label gautier
Move Mouse 308;791;Direct;ImgRef0;
Pause 00:00:02
Click Left click;
Pause 00:00:02
Move Mouse 117;667;Direct;ImgRef1;
Pause 00:00:00
Click Left click;
Pause 00:00:00
Move Mouse 644;565;Direct;ImgRef2;
Pause 00:00:00
Click Left double-click;
Pause 00:00:00
Move Mouse 462;626;Direct;ImgRef3;
Pause 00:00:00
Click Left double-click;
Pause 00:00:03
Move Mouse 255;529;Direct;ImgRef4;
Pause 00:00:02
Click Left click;
Pause 00:00:02
Move Mouse 283;604;Direct;ImgRef5;
Pause 00:00:02
Click Left click;
Pause 00:00:02
Move Mouse 512;626;Direct;ImgRef6;
Pause 00:00:02
Click Left click;
Pause 00:00:04
Goto Gautier

j'aimerai que la boucle arrêt au bout de 2 h et reprend automatiquement après 30 minutes de pause .

merci

Répondre