Je suis en train de faire un script pour générer des action à intervalles régulières.
Une des actions est d'ouvrir une fenêtre.
Lorsque je crée une Gui avec GuiCreate dans le timer, la fenêtre apparait bien, mais tout se bloque ensuite.
La seule solution pour débloquer que j'ai trouvé est de mettre une MsgBox.
Je ne parle pas de gérer les différents événements pour chaques Gui créés et gérés en parallèles.
Code : Tout sélectionner
$NbTimer variable global qui s'incrémente pour chaque appel de _GuiFille()
;===============================================================================
; Fontion qui crèe une GUI
;===============================================================================
Func _GUIFille ()
Local $COMID, $msg2=0, $NumTimer
$NumTimer = $NbTimer
;Creation de la GUI
$COMID = GuiCreate("Choix Port COM " & $NumTimer , 250, 100)
;charge un Label
GuiCtrlCreateLabel("Choix du port COM " & $NumTimer & " / " & $COMID, 10, 10)
;Affiche le Gui
GUISetState(@SW_SHOW, $COMID)
;Marche ou se bloque s'il y a le MsgBox ou non
;~ msgbox (0,"GUID" & $NumTimer & " av", $COMID,1)
; GUI MESSAGE LOOP
While $msg2 <> $GUI_EVENT_CLOSE
$msg2 = _GUIGetMsg($COMID)
WEnd
GUIDelete ($COMID)
GuiSetState()
EndFunc
Selon si je mets le msgbox, ça marche ou pas.
La fonction _GUIGetMsg ($COMID) me permet de récupérer les Msg qui correspondent à la Gui passée en paramètre.
J'aimerais bien déjà comprendre ce blocage avant de continuer.
Je sais pas si j'ai été assez clair.
question subsidiaire : la fonction sleep() arrête le script global ? Si je le met dans un timer, cela bloque uniquement le timer ou tout le script ?
Merci d'avance de votre aide.