[..] Changer un paramètre en cours de traitement

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[..] Changer un paramètre en cours de traitement

#1

Message par jpascal »

Bonjour,

J'ai créé un script qui lance un ping.
Le programme demande s'il faut ou non une alerte sonore avec une GUI au démarrage
J'ai rajouté cette option dans le menu de la Tray.

Lorsque je lance le traitement, fonction Go() dans mon script, l'activation ou désactivation du son par l'option de la Tray ne fonctionne pas. Idem pour le menu Quitter (ExitLoop).

J'ai bien activé l'option "GUIOnEventMode".

Est-ce qu'Auto-It! permet ce genre de chose ou la fonction une fois lancée est-elle exclusive sur le clic dans le menu de la Tray ?
► Afficher le texte
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Changer un paramètre en cours de traitement

#2

Message par jguinch »

Avec juste ce morceau de script, c'est difficile de t'aider...
Que contient la fonction Go() ?

Petite remarque concernant la ligne suivante :
GUICtrlSetOnEvent(-1, "Ping") : la fonction Ping() existe déjà, tu dois l'appeler autrement
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Changer un paramètre en cours de traitement

#3

Message par jpascal »

Bonjour jguinch,

Merci de ta réponse.

En fait, j'ai remplacé. Ce n'est pas Ping mais Go qu'il faut lire.

La fonction contient ce code en résumé :
► Afficher le texte
Modifié en dernier par jpascal le mar. 04 mars 2014 14:48, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Changer un paramètre en cours de traitement

#4

Message par jguinch »

OK, donc c'est normal...
Ta boucle principale s'occupe de récupérer les évènements du tray (TrayGetMsg). Mais dans cette boucle, tu fais appel à la fonction Go() qui elle-même contient une deuxième boucle (infinie ?) et une pause (Sleep) : donc tant que le programme exécute la fonction Go(), il ne peut pas récupérer les événements...
La reprise de la boucle principale ne se fera que lorsque la fonction Go() se terminera.

C'est l'inconvénient, de cette façon on ne peut pas gérer les événements + utiliser des fonctions bloquantes (comme ta fonction Go() )

Par contre, si tu nous explique un peu mieux le but de ton script (notamment la partie Ping), on pourra t'aiguiller.

@mikell : :wink:
@jpascal : pense à utilise la balise Spoiler pour le code (je l'ai ajouté dans ton premier post)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Changer un paramètre en cours de traitement

#5

Message par mikell »

Dans ta fonction Go tu as une boucle While et un Sleep, les 2 sont bloquants
Tu pourrais essayer avec TrayOnEventMode de commander un booléen global pour faire une fonction genre
► Afficher le texte
Edit
Yo jguinch, on a posté ensemble :mrgreen:

Edit2
De toute façon le Sleep de 10 secondes est un mauvais plan, préférer AdLibRegister("Go", 10000)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Changer un paramètre en cours de traitement

#6

Message par jpascal »

Bonjour,

Et bien que d'infos intéressantes. Merci à vous deux.

- Le While... WEnd et le Sleep sont bloquant
- Il existe TrayOnEventMode. Je ne connaissais que le GUIOnEventMode. :oops:
- AdlibRegister() permet de s'affranchir du Sleep
Je n'ai pas vraiment compris le dernier code mais je vais essayer de mettre tous ces conseils à profit.

Le but de mon script est simple. Je veux loguer des valeurs de ping en ayant des alertes sonores lorsque ça ne "ping pas" et pouvoir les désactiver en cliquant sur un élément du menu de la "Tray".

Je reviens vers vous dès que possible.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre