Bonjour à tous,
Je débute sur AutoIt et je rencontre un petit souci avec un script qui gère une fenêtre simple.
Le problème : la fenêtre ne se met plus à jour après un certain point du script, comme si elle se figeait.
J'ai pourtant utilisé GUISetState() et même ajouté quelques Sleep(), mais rien n’y fait.
Est-ce que quelqu’un aurait une idée de ce qui peut bloquer l’interface ?
Peut-être une boucle mal faite ou une mauvaise gestion des événements ?
Voici le comportement recherché :
mettre à jour un label en continu
garder la fenêtre responsive
Et voici le comportement réel :
la fenêtre s’affiche mais devient figée
Si un expert a une piste, je suis preneur. Merci d'avance pour votre aide !
Script AutoIt bloqué : ma fenêtre ne se met plus à jour
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.
-
louiseravot
- Niveau 1

- Messages : 11
- Enregistré le : sam. 26 juil. 2025 17:12
- Status : Hors ligne
- Nine
- AutoIt MVPs (MVP)

- Messages : 144
- Enregistré le : ven. 17 avr. 2020 01:23
- Localisation : Montréal, Québec
- Status : Hors ligne
Re: Script AutoIt bloqué : ma fenêtre ne se met plus à jour
Sans code, ça va être difficile. On peut juste jouer à la devinette. Une erreur fréquente est d'avoir une seconde boucle appelée dans la boucle principale du GUI.
Re: Script AutoIt bloqué : ma fenêtre ne se met plus à jour
Salut !
Je suis d'accord avec Nince,sans code, c'est compliqué !
Voici un début de réponse
Le problème est classique quand on débute : ta fenêtre se fige parce que ton script ne traite pas les événements Windows pendant qu'il travaille.
La solution : ajoute une boucle de messages dans ton code, donc -> au lieu de faire ton traitement en continu, tu dois utiliser :
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
; Ton code de mise à jour du label ici
GUICtrlSetData($label, "Nouveau texte")
WEnd
Le truc : GUIGetMsg() permet à Windows de rafraîchir ta fenêtre et de gérer les clics/déplacements. Sans ça, ta GUI reste "bloquée".
Si tu as un traitement long, tu peux aussi :
Découper ton code en petites étapes
Utiliser AdlibRegister() pour exécuter une fonction périodiquement
Regarder du côté de GUIOnEventMode pour un mode événementiel
N'hésite pas à partager ton code si tu as encore du mal, ça sera plus facile de t'aider
Bon courage!!
Je suis d'accord avec Nince,sans code, c'est compliqué !
Voici un début de réponse
Le problème est classique quand on débute : ta fenêtre se fige parce que ton script ne traite pas les événements Windows pendant qu'il travaille.
La solution : ajoute une boucle de messages dans ton code, donc -> au lieu de faire ton traitement en continu, tu dois utiliser :
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then Exit
; Ton code de mise à jour du label ici
GUICtrlSetData($label, "Nouveau texte")
WEnd
Le truc : GUIGetMsg() permet à Windows de rafraîchir ta fenêtre et de gérer les clics/déplacements. Sans ça, ta GUI reste "bloquée".
Si tu as un traitement long, tu peux aussi :
Découper ton code en petites étapes
Utiliser AdlibRegister() pour exécuter une fonction périodiquement
Regarder du côté de GUIOnEventMode pour un mode événementiel
N'hésite pas à partager ton code si tu as encore du mal, ça sera plus facile de t'aider
Bon courage!!
