[..] Optimisation script, il est lent a se fermer

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

[..] Optimisation script, il est lent a se fermer

#1

Message par xeno »

Hello

Cela fait deux jours que je me suis lancé dans autoit, je commence mon premier
scripts, et j'ai un petit soucis de lenteur, alors qu'il n'est pas fini.

il est très lent à se fermer ou a se mettre en pause.
étant débutant je suis ouvert a toutes suggestions et corrigé des erreurs aussi,
mais taper pas trop dur quand même c'est mon premier :P

pour le descriptif de son usage, il me permet d'automatiser certaines tâches répétitives
sur winrar et xtremsplit par exemple

► Afficher le textetext
Modifié en dernier par xeno le jeu. 28 mai 2009 19:42, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Optimisation script, il est lent a se fermer

#2

Message par Iste »

Je te conseil d'utiliser la fonction Hotkeyset() au lieu de _IsPressed()

Pour se faire, place juste au début de ton script

Code : Tout sélectionner

HotKeySet("{F12}","pause")
(faudra aussi revoir la fonction pause() du coup)

Sinon, la fonction Call() et plutot faite pour appeler une fonction dont on ne connait pas le nom a l'execution du script

Code : Tout sélectionner

createbox1()
scan2()
marche tres bien aussi ;)

Edit : la lenteur vient de tout les If Winexists, faudrait revoir ca :/ je vais y jetter un coup d'oeil
Signez ici
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..] Optimisation script, il est lent a se fermer

#3

Message par xeno »

j'ai testé un

hotkeyset("{Esc}","quitter")

et là cela quitte rapidement,

pour la lenteur c'est depuis que j'ai rajouter des If que cela c'est ralenti, c'est sûr.
pour winrar par exemple j'ai pris en compte si c'est une version french ou English, les titres
ne sont pas les mêmes.

Mais j'ai pas réussir a faire différemment. j'ai tenter d'autres méthode mais sans succès :oops:
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Optimisation script, il est lent a se fermer

#4

Message par Tlem »

Pour la création de votre script, vous vous êtes inspiré de l'exemple fournit pour la fonction GUICreate, ce qui est tout à votre honneur car cela prouve que vous avez lut la documentation.
Cela dit, cet exemple n'est pas des plus adapté à votre cas, car lui il traite un seul cas, alors que vous, vous en traité plusieurs (ce qui ralentit la gestion des différents événements graphique).

En réalité, un boucle de message classique ressemble à ceci :

Code : Tout sélectionner

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
Pour les puristes, je fait abstraction du mode événement car il est généralement utilisé lorsque l'on à une grande quantité de cas (graphique) à gérer.

Pour vous donner quelques explications sur ce type de boucle, nous allons commencer par la première ligne.
While 1 Cette commande associée à la commande Wend va nous permettre de créer une boucle infinie. While 1 signifiant : Tant Que 1 (condition qui restera toujours vraie).

Ensuite, à l'intérieur de cette boucle, nous récupérons dans la variable $nMsg la valeur de GUIGetMsg (qui regarde les différents messages
renvoyés par l'interface graphique).

Puis, nous utilisons une commande qui va permettre de diriger le déroulement du code vers le cas approprié (cas renvoyé par GUIGetMsg).
Switch et Case sont donc les commandes qui vont nous permettre de faire cela.
Dans l'exemple que je vous ai donné, Case $GUI_EVENT_CLOSE est le cas ou vous fermé la fenêtre GUI et donc le traitement est : Exit (pour sortir du code).
Voilà pour la partie boucle d'attente.

Ensuite, toujours dans votre script, vous placez tout vos codes dans des fonctions (comme dans l'exemple). Sachez que ceci n'est pas obligatoire.
C'est une bonne habitude pour du code qui doit être exécuté plusieurs fois dans le script, ou qui doit être appelé par plusieurs commandes différentes, sinon c'est plus déstabilisant qu'autre chose.

Jetez un oeil par ici pour voir comment créer un script classique.

Pensez à associé la partie principale de votre code à la touche 'Start'.
Pour la partie de test du mot de passe, je pense qu'il est possible d'optimiser.

Pour le reste, je n'ai pas trop regardé, mais voyez si par hasard il n'est pas possible de scripter les commandes plutôt que de jouer avec la partie graphique qui du jour au lendemain peut changer. ;)
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é".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Optimisation script, il est lent a se fermer

#5

Message par Iste »

Apres reflexion, je pense que le mieux serait d'utiliser le mode evenementiel (que je ne sais pas utiliser ^^')

Code : Tout sélectionner

opt("GUIOnEventMode",1)
GUICtrlSetOnEvent ($bouton, "fonction")
Et de rajouter un bon gros sleep de 100ms dans la boucle. Ca devrait devenir tres légé ^^ et assez rapide.
Peut etre aussi que d'utiliser la fonction WinList() et de faire une recherche manuel pourrait etre plus rapide

Je vais essayer de faire un bout de code exemple ce soir !

Edit : Voila, je ne peux pas tester le code d'ou je suis, mais l'idée est la !
► Afficher le texte
Signez ici
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..] Optimisation script, il est lent a se fermer

#6

Message par xeno »

@Tlem

j'ai déjà jeté un oeil :P , pour le start, disons que je voulais que cela démarre aussitot avec possibilité
d'une pause, d'ou le start. (je suis un peu fainéant autant m'éviter un clic pour lancer l'appli :roll: )

j'ai bien essayé les case select et switch mais ça partait en live, et cliquait tout seul n'importe ou :oops:
Avatar du membre
xeno
Niveau 4
Niveau 4
Messages : 79
Enregistré le : sam. 23 mai 2009 02:43
Status : Hors ligne

Re: [..] Optimisation script, il est lent a se fermer

#7

Message par xeno »

@Iste

je vais assimilé ça et tester, et je reviens, peut être pas ce soir, en attendant merci....
Répondre