[R] Comment fermer un script qui tourne en boucle.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Comment fermer un script qui tourne en boucle.
Bonjour,
J'ai une GUI avec deux boutons le premier pour lancer le scripte (Go), le deuxième bouton me permet de quitter le scripte.
Mon problème : Impossible d’arrêter mon scripte qui tourne en boucle (While 1/WEnd) avec le bouton « Quitter » dans lequel j’ai mis la fonction Exit. J’ai beau chercher par moi-même, mais je ne trouve pas la solution. Alors Comment sortir de la boucle et fermer le script.
Merci pour votre aide…
Cordialement.
J'ai une GUI avec deux boutons le premier pour lancer le scripte (Go), le deuxième bouton me permet de quitter le scripte.
Mon problème : Impossible d’arrêter mon scripte qui tourne en boucle (While 1/WEnd) avec le bouton « Quitter » dans lequel j’ai mis la fonction Exit. J’ai beau chercher par moi-même, mais je ne trouve pas la solution. Alors Comment sortir de la boucle et fermer le script.
Merci pour votre aide…
Cordialement.
Modifié en dernier par Boulanza le lun. 27 juil. 2015 11:17, modifié 2 fois.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Comment sortir de la boucle et fermer le script.
Ben et le code ? où l'est le code ? 

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Comment fermer un script qui tourne en boucle.
Re-Bonjour,
J'ai pas le code en main.
J'ai changé le titre (Comment fermer un script qui tourne en boucle.) de ma demande pour qu'elle soit une solution générale à tous script qui tourne en boucle.
Cordialement.
J'ai pas le code en main.
J'ai changé le titre (Comment fermer un script qui tourne en boucle.) de ma demande pour qu'elle soit une solution générale à tous script qui tourne en boucle.
Cordialement.
Re: [..] Comment fermer un script qui tourne en boucle.
Salut,
Voici une solution :
J'ai vérifié, ça marche très bien 
Voici une solution :
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$GUI = GUICreate("GUI", 200, 100, 200, 130)
$Bouton1 = GUICtrlCreateButton("Go", 5, 5, 190, 25)
$Bouton2 = GUICtrlCreateButton("Fermer", 5, 35, 190, 25)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $Bouton1
; Ton script
Case $Bouton2
Exit
EndSwitch
WEnd- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Comment fermer un script qui tourne en boucle.
La question est un peu vague mais j'imagine que la boucle While bloque le script. Si c'est le cas, il y a cette page sur le wiki : Interrupting a running function qui à l'air d'être en rapport avec ta demande.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] Comment fermer un script qui tourne en boucle.
Merci TiDi,
Mon script ressemble à votre exemple, mais le boutant Exit est inactif lorsque le script tourne en boucle infini.
Mon script ressemble à votre exemple, mais le boutant Exit est inactif lorsque le script tourne en boucle infini.
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$GUI = GUICreate("GUI", 200, 100, 200, 130)
$Bouton1 = GUICtrlCreateButton("Go", 5, 5, 190, 25)
$Bouton2 = GUICtrlCreateButton("Fermer", 5, 35, 190, 25)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $Bouton1
[color=#0000FF]Mon script qui tourne en boucle infini.[/color]
Case $Bouton2
[color=#0000FF]Exit est inactif lorsque le script tourne en boucle infini.[/color]
EndSwitch
WEnd- ZDS
- Membre émérite

- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [..] Comment fermer un script qui tourne en boucle.
Boujour Boulanza,
Ce que tu peux faire, c'est un garde fou :Et si tu souhaites conserver la possibilité de couper le programme avec un bouton et pas qu'avec un raccourci, il faut traiter son appui hors de la boucle While-WEnd :
Attention, pour que la fonction command(...) sache à quel bouton elle a à faire, il faut que la variable de ton bouton $Bouton2 soit en global.
A bientôt !
PS: Il n'en reste pas moins que c'est une méthode qui est loin d'être propre. Ce qu'il faudrait c'est prévoir dans le code qui boucle une fonction d'arrêt, et pour cela il faudrait comme l'a demandé mikell que tu nous postes le code qui boucle. Autant boucher une fuite plutôt que d'écoper.
Ce que tu peux faire, c'est un garde fou :
► Afficher le texteCode avec fonction d'arrêt
► Afficher le texteCode avec fonction d'arrêt
A bientôt !
PS: Il n'en reste pas moins que c'est une méthode qui est loin d'être propre. Ce qu'il faudrait c'est prévoir dans le code qui boucle une fonction d'arrêt, et pour cela il faudrait comme l'a demandé mikell que tu nous postes le code qui boucle. Autant boucher une fuite plutôt que d'écoper.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Re: [..] Comment fermer un script qui tourne en boucle.
Merci infiniment ZDS pour la solution garde fou... c'est très clair comme explication.
Actuellement j'utilise la fonction:
; Touche echap pour quitter le script en cours.
HotKeySet("{ESC}", "Fin")
; Fonction de sortie du script.
Func Fin()
Exit
EndFunc
Mais je cherche une solution en cliquant sur le bouton "Quitter" pour arrêter l'application (script).
Cordialement.
Actuellement j'utilise la fonction:
; Touche echap pour quitter le script en cours.
HotKeySet("{ESC}", "Fin")
; Fonction de sortie du script.
Func Fin()
Exit
EndFunc
Mais je cherche une solution en cliquant sur le bouton "Quitter" pour arrêter l'application (script).
Cordialement.
- ZDS
- Membre émérite

- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [..] Comment fermer un script qui tourne en boucle.
Le second code est exactement ce que tu veux, tu n'as pas dû lire tout mon message.ZDS a écrit :Et si tu souhaites conserver la possibilité de couper le programme avec un bouton et pas qu'avec un raccourci [...]
Mais je me répète, couper le script en plein milieu de son exécution est une méthode à proscrire.
Envoie-nous le code qui boucle pour qu'on puisse t'aider à le terminer proprement.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Comment fermer un script qui tourne en boucle.
Ce qui n'est pas clair : qu'est-ce qui peut empêcher le bouton 'Quitter' de faire son boulot ?
Par exemple, si le bouton1commande une fonction qui "tourne en boucle infinie" et que cette fonction contient elle-même une boucle While, à part une hotkey les seuls moyens qui marchent sont le mode événementiel ou le GuiRegisterMsg, comme l'ont déjà évoqué ZDS dans son message ou orax qui fournit le lien qui va bien dans ce post
Il est donc nécessaire de savoir exactement ce que commande le bouton1, autrement il est impossible de répondre à la question posée, auquel cas ce sujet n'a aucun intérêt donc il sera fermé (logique)
Le but de ce forum est d'aider les utilisateurs à résoudre un problème précis, pas de recopier toutes les solutions possibles mentionnées dans le fichier d'aide sur une question générique beaucoup trop vague
Non mais
Par exemple, si le bouton1
Code : Tout sélectionner
Case $Bouton1
Mon script qui tourne en boucle infini.Il est donc nécessaire de savoir exactement ce que commande le bouton1, autrement il est impossible de répondre à la question posée, auquel cas ce sujet n'a aucun intérêt donc il sera fermé (logique)
Le but de ce forum est d'aider les utilisateurs à résoudre un problème précis, pas de recopier toutes les solutions possibles mentionnées dans le fichier d'aide sur une question générique beaucoup trop vague
Non mais
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Comment fermer un script qui tourne en boucle.
Bonjour tout le mande,
Oui Messieurs, vous avez raison, la solution 2 de ZDS est parfaite et universelle pour forcer la fermeture d'une application qui tourne en boucle infini.
je vous remercie pour votre aimable aide.
Cordialement.
Oui Messieurs, vous avez raison, la solution 2 de ZDS est parfaite et universelle pour forcer la fermeture d'une application qui tourne en boucle infini.
je vous remercie pour votre aimable aide.
Cordialement.


