stopsoftwarepatents.eu petition banner

AutoIt Français

Communauté Francophone AutoIt
* Connexion   * M’enregistrer

Heures au format UTC + 1 heure


Règles du forum

Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 
Auteur Message
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 30 Nov 2009 02:36
Messages: 54

Dernier message
Sujet du message: [R] Sleep qui empeche fermeture Gui
MessagePosté: Mar 27 Juil 2010 20:33 

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 ?


Dernière édition par networe le Jeu 29 Juil 2010 12:35, édité 1 fois.

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Avatar de l’utilisateur
Inscription: Jeu 26 Juil 2007 20:31
Messages: 802
Age: 33

Localisation: Paris
Sujet du message: Re: [..]Sleep qui empeche fermeture Gui
MessagePosté: Mar 27 Juil 2010 20:38 

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.
Image

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 30 Nov 2009 02:36
Messages: 54
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mar 27 Juil 2010 20:54 

Je comprend vraiment pas cette fonction :x

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 30 Nov 2009 02:36
Messages: 54
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mar 27 Juil 2010 21:16 

J'essais AdlibEnable

J'ai mon script ..

Code
While 1
...
Caliss() ; Jappel la fonction Caliss
Wend


Et ça marche bien mais :

Code
While 1
...
AdlibEnable("Caliss",110)
Wend


Impossible de le faire marcher, Comment ca ??


Dernière édition par networe le Mer 28 Juil 2010 12:55, édité 1 fois.

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Avatar de l’utilisateur
Inscription: Jeu 26 Juil 2007 20:31
Messages: 802
Age: 33

Localisation: Paris
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mar 27 Juil 2010 21:27 

[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 :

Spoiler pour :
Code


#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)  ; Change to OnEvent mode
$mainwindow = GUICreate("Hello World", 200, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlCreateLabel("Hello world! How are you?", 30, 10)
$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)
GUICtrlSetOnEvent($okbutton, "OKButton")
GUISetState(@SW_SHOW)

While 1
  Sleep(1000)  ; Idle around
WEnd

Func OKButton()
  ;Note: at this point @GUI_CTRLID would equal $okbutton,
  ;and @GUI_WINHANDLE would equal $mainwindow
  MsgBox(0, "GUI Event", "You pressed OK!")
EndFunc

Func CLOSEClicked()
  ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
  ;and @GUI_WINHANDLE would equal $mainwindow
  MsgBox(0, "GUI Event", "You clicked CLOSE! Exiting...")
  Exit
EndFunc

 


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

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.
Image

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 30 Nov 2009 02:36
Messages: 54
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mar 27 Juil 2010 22:51 

Donc sortir AdlibEnable du while 1 est fait :

Code
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
While 1
..
MaFonctionPrimaire()
Wend

...C'est compliquer...!:)


Dernière édition par networe le Mer 28 Juil 2010 12:55, édité 1 fois.

 Profil  
 
AutoIt Français
Hors ligne
Site Admin
Site Admin
Avatar de l’utilisateur
Inscription: Ven 20 Juil 2007 20:00
Messages: 5598
Age: 43

Localisation: Bordeaux
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mer 28 Juil 2010 07:12 

@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 : viewtopic.php?p=24896#p24896



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 ...

Salutations.
Thierry

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 30 Nov 2009 02:36
Messages: 54
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mer 28 Juil 2010 12:56 

Je suis comme ça :')

C'est édité, et un Up pour ma question :(?

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Avatar de l’utilisateur
Inscription: Jeu 26 Juil 2007 20:31
Messages: 802
Age: 33

Localisation: Paris
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Mer 28 Juil 2010 19:51 

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.
Image

 Profil  
 
AutoIt Français
Hors ligne
Niveau 4
Niveau 4
Inscription: Lun 30 Nov 2009 02:36
Messages: 54
Sujet du message: Re: [..] Sleep qui empeche fermeture Gui
MessagePosté: Jeu 29 Juil 2010 12:34 

Voila le problème est résolu avec adlibenable :)

 Profil  
 
AutoIt Français
Hors ligne
Modérateur
Modérateur
Avatar de l’utilisateur
Inscription: Jeu 26 Juil 2007 20:31
Messages: 802
Age: 33

Localisation: Paris

Haut
Sujet du message: Re: [R] Sleep qui empeche fermeture Gui
MessagePosté: Jeu 29 Juil 2010 18:54 

et bien tant mieux



Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Image

 Profil  
 
Afficher les messages postés depuis:  Trier par  

Poster un nouveau sujet Répondre au sujet  [ 11 messages ] 

Heures au format UTC + 1 heure


Utilisateurs parcourant ce forum: Exabot [Bot] et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron

AutoIt Français
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Sniper_Blue phpBB-3.0 Style © 2007 Sniper_E
Traduction par: phpBB-fr.com