Page 1 sur 1

[R] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 16:29
par keltharak
Bonjour,

Est-il possible de lire l'état d'un TrayTip ? Je veux dire par la, est-on capable de checker le Traytip pour savoir s'il est toujours visible pour l'utilisateur ? (sachant qu'il peut se fermer soit par le Timeout, soit par l'action de l'utilisateur...)

Merci d'avance

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 17:19
par ZDS
Bonjour,

Ce n'est pas forcément facile de détecter l'état d'un traytip, mais en faisant une petite recherche sur le forum anglophone d'AutoIt, tu tombes sur un exemple de script qui permet de détecter un clic sur un traytip, mais aussi de détecter si le traytip se ferme (user ou timeout). ^^

Je te file le lien au cas où, et le script en spoiler :
► Afficher le texteScript provenant de Rover
Comme on dit chez eux, you're welcome :)

A bientôt !

PS: Sans certitude, l'UDF très complète "ModernMenu" de Holger permet de le faire assez facilement aussi. Mais tout ça n'est possible que si ton traytip provient de ton script (ou assimilé) il me semble.

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 17:54
par sylvanie
le soucis avec le traytip, c'est que le winexist,wingethandle,etc ne fonctionne pas.

Je pensais à faire un gros truc bourrin (désolé pour l'expression, mais attendez la suite ...) qui consiste à lancer un winlist() avant et après l'appel au traytip pour faire un diff pour récupérer le handle.

C'est très infâme, et là je constate que le traytip apparaît chez moi systématiquement en deuxième position de l'énumération de winlist (la position 0 étant consacrée à la dimension du tableau)

du coups ce script de fiabilité "nitroglycérine" fonctionne chez moi :
► Afficher le texte
Si ça le fait chez vous, tant mieux ... mais bon ...

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 19:33
par Tlem
J'ai trouvé ceci :
► Afficher le texte
mais étonnamment cela ne fonctionne pas !!! :cry:
Pourtant tout est bon, le handle et le WinExist, mais dans la boucle, ca ne fonctionne pas ...
Il doit me manquer un petit truc, mais là, je ne vois pas (je suis peut être un peu fatigué !!!). :mrgreen:

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 20:42
par sylvanie
J'avais utilisé ceci au début aussi, mais le handle indiqué (détecté aussi par au3info) n'est pas le vrai.
C'est là que je me suis rabattu sur le diff entre deux winlist(), et donc j'ai contaté que le handle retourné n'était pas celui qui gérait "pour de vrai" le tooltip.
pour faire plus propre que ce que j'ai proposé, il faudrait faire une fonction qui traîte les deux tableaux retournés par les winlist() de la manière suivante :
- On recréé 2 tableaux ne contenant que les handle
- On les trie
-On les parcours et on regarde à indice égale si ça diffère, alors le handle du 2eme tableau est (à 90%+des brouette) le handle cherché

Maintenant pourquoi le 90% ... et bien il se peut qu'entre les deux appels, des fenêtres de la session disparaissent ou se créent, et là pas de chance.

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 20:48
par Tlem
Rhhooo, ben alors, si AutoIt nous fait des blagues, maintenant ...

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 21:25
par sylvanie
A défaut de mieux voici ce que je proposais tout à l'heure en théorie :
► Afficher le texte
@Tlem : Et bien là je pense que le handle retouné est celui d'une fenêtre englobante, ce qui fausse le résultat ...

[EDIT]
inserrez les lignes suivantes après l'appel à la fonction de tri :
ConsoleWrite($handle&@CRLF)
ConsoleWrite(WinGetHandle("[CLASS:tooltips_class32]", "")&@CRLF)

vous verrez bien que les handles ne sont pas les mêmes

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 21:33
par Tlem
J'ai trouvé des petites choses intéressantes ici :
- http://www.autoitscript.com/forum/topic ... _p__703181
- http://www.autoitscript.com/forum/topic ... __p__64671

Le dernier code, créé par valik est surprenant, mais il fonctionne parfaitement ...

Re: [..] Lire l'état d'un TrayTip

Posté : mer. 06 avr. 2011 21:51
par sylvanie
Ah oui, il est nickel

Re: [..] Lire l'état d'un TrayTip

Posté : jeu. 07 avr. 2011 10:15
par keltharak
Merci beaucoup pour vos réponses et vos solutions.

Je suis arrivé exactement au résultat que je recherchais grâce à la 2° solution de Tlem,

► Afficher le texte
Ca marche impeccable :) merci encore.

Re: [R] Lire l'état d'un TrayTip

Posté : jeu. 07 avr. 2011 10:36
par sylvanie
L'implémentation de Rover est plus délicate au début à cerner, mais elle est plus adaptée à des situations du type :
- si j'ai un timeout du ballon alors je peux faire X
- Si l'utilisateur ferme avec la croix je peux faire Y
Du coups ça réponds aussi au problème, mais c'est limite "tops riche"

Il faut la garder en mémoire pour le jour où le cas se posera

PS : Il y a un post de ZDS qui c'est perdu dans les réponses ou j'ai révé ?

Re: [R] Lire l'état d'un TrayTip

Posté : jeu. 07 avr. 2011 10:55
par keltharak
Effectivement, ça permet plus de flexibilité.

Pour le post de ZDS, ce matin en lisant vos réponse je n'en avais qu'une...