Stopper une boucle

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
karl56
Messages : 10
Enregistré le : 18 avr. 2020, 09:19

Stopper une boucle

Message par karl56 » 18 avr. 2020, 09:38

Bonjour,
J'ai parcouru le forum pour trouver une solution à mon problème, sans succès, je n'arrive pas à adapter les solutions trouvées à mon cas.
J'ai une macro qui tourne en boucle (avec le plugin boucle) que je voudrais stopper à n'importe quel moment en appuyant sur une touche. voici ma macro;

Code : Tout sélectionner

Boucle	50
Move Mouse	1827;166;Direct;ImgRef1;
Click	Left click;
Type Special	ESPACE;
Move Mouse	2334;251;Direct;ImgRef0;
Click	Left click;
Timer	1;
Type Special	Y;
Boucle	[FIN]
C'est pourtant simple vous allez me répondre, oui mais malheureusement je n'ai pas votre logique... :(
merci d'avance pour votre aide.
Précision; je voudrais que cette boucle tourne en permanence (pas seulement 50 fois) et donc pouvoir la stopper en appuyant sur une touche, par exemple "s".

plvh935
Messages : 166
Enregistré le : 10 sept. 2014, 22:33

Re: Stopper une boucle

Message par plvh935 » 19 avr. 2020, 10:34

Bonjour,
Plusieurs choix :
dans l'interface de SM, via le menu : Macro/option/contrôle : Mise en pause = Alt+F1, Arrêt définitif = Alt+F2 (options par défaut),
dans ta boucle tu testes la frappe d'une touche spécifique ("s" dans ton exemple) via les variables EVENT.KEY et EVENT.ACTIVATE. Regardes sur le forum dans besoin d'aide, il y a un post sur ce sujet (Détecter si une touche est pressée).
Bon courage.

karl56
Messages : 10
Enregistré le : 18 avr. 2020, 09:19

Re: Stopper une boucle

Message par karl56 » 19 avr. 2020, 16:21

Merci pour cette réponse, cependant l'option Alt+F2 ouvre une fenêtre de confirmation en arrière plan et pour l'exemple que tu évoques, c'est celui sur lequel j'essaye de progresser sans succès...et j'insiste sur le fait que j'ai parcouru déjà l'ensemble du forum...

Avatar du membre
Onissius
Messages : 744
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Stopper une boucle

Message par Onissius » 19 avr. 2020, 19:38

Accueil / Home => Index du forum Supermacro => Besoin d'aide =>
Annonces => Détecter si une touche est pressée

Dans ta boucle insère se genre de chose.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

karl56
Messages : 10
Enregistré le : 18 avr. 2020, 09:19

Re: Stopper une boucle

Message par karl56 » 19 avr. 2020, 20:48

Merci pour ta réponse, mais comme je l'ai dit à Plvh935 c'est à partir de ce sujet que j'essaye justement de progresser sans succès. Pour être concret voici la macro, que j'ai faite évoluée en ajoutant un pixelcolor. Le tout fonctionne bien mais pas la capture du "s" pour stopper la boucle...

Cette macro permet, dans un programme, de positionner la souris sur une partie de fenêtre à activer, de placer la souris pour valider une fonction dans cette même fenêtre, de détecter si une nouvelle boite de dialogue s'ouvre pour la valider(pixelcolor), tout ceci en boucle 100 fois. Je voudrais interrompre cette boucle à tout moment.

Code : Tout sélectionner

Variable	<couleur>;255255255;Numerique;
Variable	[EVENT.ACTIVATE];1;Numerique;
Variable	[EVENT.KEY];;Alpha;
Boucle	100
Move Mouse	1827;162;Direct;;
Click	Left click;
Type Special	Y;[KeyDown];
Type Special	Y;[KeyDown];
Move Mouse	2334;251;Direct;ImgRef0;
Click	Left click;
Type Special	Y;[KeyDown];
Click	Left click;
Type Special	Y;
PixelColor	1289;707;<couleur>;
Examine	<couleur>;=;255255255;
Goto	<clicOk>
Goto	<debutBoucle>
Label	<clicOk>
Move Mouse	1282;754;Direct;
Click	Left click;
Label	<capture s>
Examine	[EVENT.KEY];=;s;
Goto	<fin>
Goto	<capture s>
Label	<debutBoucle>
Boucle	[FIN]
Label	<fin>
Calcul évolué	[EVENT.ACTIVATE]=0
Calcul évolué	[EVENT.KEY]=Touche trouvée=+[EVENT.KEY]
Message	Message;[EVENT.KEY];
Pour information, j'ai utilisé le code de plvh935.
quel est mon erreur? qu'est ce que je n'ai pas compris?

plvh935
Messages : 166
Enregistré le : 10 sept. 2014, 22:33

Re: Stopper une boucle

Message par plvh935 » 19 avr. 2020, 22:54

Bonsoir,
J'ai fait tourner ta macro sur mon environnement. Pour moi tout est OK. La touche "s" est bien détectée et la macro s'arrête.
Du coup je sais pas où est le problème.
Pour info, je suis sous W7 Pro 64.
A +

karl56
Messages : 10
Enregistré le : 18 avr. 2020, 09:19

Re: Stopper une boucle

Message par karl56 » 19 avr. 2020, 23:25

Merci pour avoir testé ma macro.
Je suis sous W10 Pro 64...
SM en mode de compatibilité W7 et la capture de la touche "s" ne fonctionne pas....le pb est peut être là. Mais pourquoi le reste fonctionne?

plvh935
Messages : 166
Enregistré le : 10 sept. 2014, 22:33

Re: Stopper une boucle

Message par plvh935 » 20 avr. 2020, 19:55

Bonsoir,
Super Macro utilise les API Windows pour gérer les interactions. Je suis pas sûr de cela mais peut être que cette fonction (capture d'une action sur une touche du clavier) a été modifiée dans W10.
As-tu essayé d'utiliser juste cette fonction de capture de touche (créer une macro avec EVENT.ACTIVATE et EVENT.KEY et tester la capture) pour éliminer tout le reste ?
Question bête, mais quand même : pourquoi "s" et pas "q" ou "z" ? as-tu essayé d'affecter une autre touche, juste pour voir ?
Perso j'ai pas W10 Pro 64 bits pour tester, mais il est bien certain que plus ça va et moins SM sera à niveau. Et comme personne ne veut/peut s'investir dans les évolutions, l'écart est de plus en plus criant. Un jour ce ne sera plus qu'un bon souvenir... hélas.
A +

karl56
Messages : 10
Enregistré le : 18 avr. 2020, 09:19

Re: Stopper une boucle

Message par karl56 » 21 avr. 2020, 16:41

Merci pour le retour,
Comme suggéré, j'ai créé cette macro, qui reprend les mêmes éléments que dans la précédente;

Code : Tout sélectionner

Variable	[EVENT.ACTIVATE];1;Numerique;
Variable	[EVENT.KEY];;Alpha;
Label	<capture s>
Examine	[EVENT.KEY];=;s;
Goto	<fin>
Goto	<capture s>
Label	<debutBoucle>
Boucle	[FIN]
Label	<fin>
Calcul évolué	[EVENT.ACTIVATE]=0
Calcul évolué	[EVENT.KEY]=Touche trouvée=+[EVENT.KEY]
Message	Message;[EVENT.KEY];
J'ai le message "touche trouvée=s" lorsque j’appuie sur "s", cependant dans la macro précédente elle ne stoppe pas avec la même action...?la boucle va à son terme.

plvh935
Messages : 166
Enregistré le : 10 sept. 2014, 22:33

Re: Stopper une boucle

Message par plvh935 » 21 avr. 2020, 22:19

Bonsoir,
Point de détail, mais quand même : tu testes la touche "s" via examine. Si c'est cela tu vas au label <fin> où tu affiches le résultat "touche trouvée = s" via message. Ici pour terminer proprement tu dois mettre un "Quitter".

J'ai oublié de préciser une autre solution, que l'on utilise sans doute pas assez : le plug-ins "visualcontrol" qui te permettra d'avoir la main sur le déroulé de ta macro.Tu le télécharges et le met en début de macro, avant la déclaration des variables et c'est OK (du moins chez moi). Ça vaut la peine d'essayer.
Bon courage.

Répondre