[R] Sleep qui empeche fermeture Gui

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
networe
Niveau 4
Niveau 4
Messages : 92
Enregistré le : lun. 30 nov. 2009 02:36
Status : Hors ligne

[R] Sleep qui empeche fermeture Gui

#1

Message par networe »

Comme mon ancient message supprimé ..

Avec un Sleep(1000) mon gui est innaccessible (Les bouttons sont gelés)

Vous m'avez dit un Sleep(50) arrange le problème, mais il gêne toujours le CPU et les clics se font avec un petit 'lag' quand même gênant.

Possible d'arranger cela ?
Modifié en dernier par networe le jeu. 29 juil. 2010 13:35, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..]Sleep qui empeche fermeture Gui

#2

Message par sylvanie »

il faut peut être alors passer en mode evenmentiel avec Opt("GUIOnEventMode", 1) et assigner une fonction par contrôle
(voir fichier d'aide sur GUIOnEventMode)
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
networe
Niveau 4
Niveau 4
Messages : 92
Enregistré le : lun. 30 nov. 2009 02:36
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#3

Message par networe »

Je comprend vraiment pas cette fonction :x
networe
Niveau 4
Niveau 4
Messages : 92
Enregistré le : lun. 30 nov. 2009 02:36
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#4

Message par networe »

J'essais AdlibEnable

J'ai mon script ..

Code : Tout sélectionner

While 1 
...
Caliss() ; Jappel la fonction Caliss
Wend
Et ça marche bien mais :

Code : Tout sélectionner

While 1 
...
AdlibEnable("Caliss",110)
Wend
Impossible de le faire marcher, Comment ca ??
Modifié en dernier par networe le mer. 28 juil. 2010 13:55, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#5

Message par sylvanie »

[edit par croisement de posts]
AdlibEnable ne doit pas être prise dans un while, puisque son but est de lancer cycliquement une fonction sans avoir à passer par une boucle
[ fin edit]

ok, pour le mode evenementiel , voici un copier coller du code d fichier d'aide pour analyse :
► Afficher le texte
la philosophie est de remplacer le gros while 1 ... wend contenant l'ensemble des tests : si controle pressé est bouton1 alors faire ça, si bouton 2 faire ça, etc . par un

Code : Tout sélectionner

while 1
  sleep(1000)
wend
 
mais en contre partie, il faut enregistrer des callback (fonction) à chaque controle de la fenêtre pour que le script sache quoi exécuter lors de l'appui dessus

pour enregistrer ces fonction nous avons 2 "enregistreurs" :
GUISetOnEvent pour les boutons (maintenant on va plutôt parler d'évènement) de la fenêtre principal (croix de fermetre, agrnadissement, réduction ....)
et
GUICtrlSetOnEvent qui va gérer les contrôle de notre programme à proprement parlé (nos boutons, combobox, listview, etc)

ainsi dans l'exple de l'aide :
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") indique qu'à la croix ($GUI_EVENT_CLOSE , là faut lire l'aide pour les correspondence) on associe la fonction CLOSEClicked écrite plus bas dans le code

de même après on a :
GUICtrlSetOnEvent($okbutton, "OKButton")
qui associe au bouton créé une ligne plus haut "$okbutton" la fonction OKBOUTON écrite de même dans le code.

donc dans votre code, il faudrait associer à chacun de vos contrôle, la fonction lancée lorsque vous cliquez dessus
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
networe
Niveau 4
Niveau 4
Messages : 92
Enregistré le : lun. 30 nov. 2009 02:36
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#6

Message par networe »

Donc sortir AdlibEnable du while 1 est fait :

Code : Tout sélectionner

While 1
..
LancerAdlibEnable()
Wend

Func LancerAdlibEnable()
        AdlibEnable("MaFonctionPrimaire",110)
EndFunc

Func MaFonctionPrimaire()
    ....
EndFunc
Mais ma fonctionPrimaire n'est encore pas exécuté..Saufe quand je l'appel directement au début dans le while

Code : Tout sélectionner

While 1
..
MaFonctionPrimaire()
Wend
...C'est compliquer...!:)
Modifié en dernier par networe le mer. 28 juil. 2010 13:55, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#7

Message par Tlem »

@networe
Après 40 messages sur le forum, vous ne savez toujours pas utiliser les balises de code !!! :evil:

Merci de faire le nécessaire en corrigeant vos messages ci-dessus.
Pour mémoire : http://www.autoitscript.fr/forum/viewto ... 896#p24896
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
networe
Niveau 4
Niveau 4
Messages : 92
Enregistré le : lun. 30 nov. 2009 02:36
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#8

Message par networe »

Je suis comme ça :')

C'est édité, et un Up pour ma question :(?
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#9

Message par sylvanie »

là je pressent 2 problèmes de fonts qui ici ont fâcheusement tendence à se confondre :
- la gestion de la fenêtre d'après le 1er message, qui peut être améliorée (légèrement) par le passage en mode évènementiel
-une fonction appelée cycliquement via un adlibenable (qui est toujours inclus dans le while 1 au passage, puisque vous avez juste délocalisé l'appel via une fonction qui est dans la boucle ...)

pour éliminer les pistes de lag, vous allez :
- tester la réactivité en supprimant l'appel à la fonction lancée par le adlibenable. Si les troubles persistent alors il faut se lancer dans le mode évènementiel corps et ame.
-Sinon : il s'agit de la fonction lancée cycliquement. A ce moment, il faudra chercher à l'optimiser (essayer d'éviter les imbrications de boucles par exple) et au cas échéant compiler ce code à part pour le lancer via la commande "run" depuis votre script principal
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
networe
Niveau 4
Niveau 4
Messages : 92
Enregistré le : lun. 30 nov. 2009 02:36
Status : Hors ligne

Re: [..] Sleep qui empeche fermeture Gui

#10

Message par networe »

Voila le problème est résolu avec adlibenable :)
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [R] Sleep qui empeche fermeture Gui

#11

Message par sylvanie »

et bien tant mieux
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre