[..] Problème avec la fonction TrayItemSetText

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
toM
Niveau 1
Niveau 1
Messages : 1
Enregistré le : jeu. 17 mars 2011 16:53
Status : Hors ligne

[..] Problème avec la fonction TrayItemSetText

#1

Message par toM »

Bonjour,
J'ai un problème avec la fonction TrayItemSetText, qui sert à personnaliser le menu de la tray icône.
Soit le code ci-dessous :

Code : Tout sélectionner

#include <Constants.au3>

TraySetState()
TrayItemSetText($TRAY_ITEM_PAUSE, "Guard en pause")
TrayItemSetText($TRAY_ITEM_EXIT, "Quitter")

While 1
    Sleep(100)
WEnd
 
Sur mon PC, j'obtiens le message "r" pour les 2 entrées de menu (Script paused et Exit). Sur un autre PC, un caractère carré vide. J'ai bien l'impression que cette fonction marchait correctement auparavant. Là, je ne vois pas ce qui cloche :( . Lorsque j'omets les lignes TrayItemSetText, les menus par défaut apparaissent correctement.
Merci de votre aide.

ToM

PS : je ne me rappelle plus le titre que j'avais mis, donc je ne sais pas pourquoi il 'était pas conforme. J'espère que celui-ci est conforme...
Modifié en dernier par toM le lun. 21 mars 2011 14:27, modifié 1 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..]

#2

Message par zeshrek »

Titre non conforme, merci de rectifier
Si vis pacem para bellum
ethneldryt
Status : Hors ligne

Re: [..]

#3

Message par ethneldryt »

A ben ca alors je suis pas le seul ! Sur certain pc ca marche et d'autre petit carré aussi. Mais j'ai aussi un autre problème moi, quand je clique sur un item du tray menu, ben se menu, il se coche, alors qu'avant non.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2283
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Problème avec la fonction TrayItemSetText

#4

Message par jchd »

Voici un exemple :
► Afficher le texte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Problème avec la fonction TrayItemSetText

#5

Message par sylvanie »

Bonsoir

Il s'agit bien d'un bug relaté sur le forum américain, dont visiblement un correctif est attendu en 3.7 ...
Le pb était plus relaté sur Win7, mais effectivement il est facilement reproductible sur XP

Le contournement de Jchd permet bien d'avoir l'affichage nickel, mais on fait une croix sur l'appel à la pause (ou alors il faut la réimplémenter)

En alternative demi-satisfaisante, on peut relancer le setitemtext dans le corps de message, car si on observe bien, c'est le premier click sur le tray qui ne marche pas. Il y a ensuite une sorte de déblocage, et là le settext fonctionne :
► Afficher le texte


NB : la variable static permet de ne pas refaire l'action une fois qu'elle s'est faite correctement
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2283
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Problème avec la fonction TrayItemSetText

#6

Message par jchd »

Sylvanie, sans vouloir traîner dans la boue ton idée, je ne suis pas trop chaud au niveau du principe et voici pourquoi.

Certes on peut faire ainsi, mais s'il ne s'agit que de reimplémenter la pause, l'exit et une ligne entre les deux, ce n'est pas vraiment bien sorcier, pas plus que ce fix. Le problème avec une "astuce" comme ça est qu'elle repose sur deux choses instables : un bug abscons au niveau de la gestion du tray (dont seuls les devs connaissent les caractéristiques, et encore s'ils ont assez planché dessus, ce qui n'est pas une priorité) et une "feature" (static) qui ne fait pas partie intégrale du langage (et qui a aussi des bugs connus). Si on veux faire propre, il faut aussi documenter le "pourquoi on fait comme ça", ce qui revient à écrire un roman sur le bug qu'on contourne.

L'avantage qu'il y a dans la méthode où on créé le menu de toutes pièces est qu'on en maîtrise tous les aspects avec du code reposant sur des appels qui fonctionnent et de ce fait tout se trouve intégralement documenté rien qu'à l'examen du source.

D'ailleurs, on a aussi un souci similaire avec le gettext et le delete des items par défaut, ce qui complique encore la solution "hack".

Soit dit juste entre nous, tray et GUI ne sont pas forcément les meilleures parties d'AutoIt (au niveau du code d'AutoIt).
Par ailleurs, que _personne_ ne retienne sa respiration jusqu'à la sortie de la prochaine mouture stable...
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Problème avec la fonction TrayItemSetText

#7

Message par sylvanie »

Je ne considère point ceci comme un trainage dans la boue, tout le monde a le droit de s'exprimer ^^

Pour le static, on peut passer par une globale si on n'a pas confiance, par contre pour la pause, je ne la trouve pas si simple que ça à réimplémenter, car si on est "emprisonné" dans une boucle consommatrice en CPU, je ne pense pas qu'on puisse facilement interrompre celle-ci come le fait là pause native qui arrive à faire une interruption nette. C'est pour çà que je proposais cette version que je qualifiait bien de demi satisfaisante.

Par contre si on a une implémentation de pause qui est aussi efficace, effectivement c'est gangé.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2283
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Problème avec la fonction TrayItemSetText

#8

Message par jchd »

Voici un exemple d'utilisation (idiot, je l'accorde). En pause, on ne consomme quasiment aucun CPU mesurable mais on a le contrôle complet sur le fonctionnement du tray et de ses composants.
► Afficher le textetext
J'ai rendu l'option 1 non sélectable tant qu'on est en pause, tandis que l'emploi de l'option 2 est indifférent à la pause.
Si on sucre les variables et msgbox de démo, le code est robuste, compact et clair.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Problème avec la fonction TrayItemSetText

#9

Message par sylvanie »

Bien vu
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre