[R] Lire l'état d'un TrayTip
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Lire l'état d'un TrayTip
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
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
Modifié en dernier par keltharak le jeu. 07 avr. 2011 10:15, modifié 1 fois.
- ZDS
- Membre émérite
- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
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 :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.
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

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.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
- sylvanie
- Niveau 11
- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
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 :
Si ça le fait chez vous, tant mieux ... mais bon ...
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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
J'ai trouvé ceci :mais étonnamment cela ne fonctionne pas !!!
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é !!!).
► Afficher le texte

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é !!!).

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é".
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é".
- sylvanie
- Niveau 11
- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
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.
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.
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
Rhhooo, ben alors, si AutoIt nous fait des blagues, maintenant ...
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é".
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é".
- sylvanie
- Niveau 11
- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
A défaut de mieux voici ce que je proposais tout à l'heure en théorie :
@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
► Afficher le texte
[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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
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 ...
- 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 ...
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é".
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é".
- sylvanie
- Niveau 11
- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Lire l'état d'un TrayTip
Ah oui, il est nickel
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Re: [..] Lire l'état d'un TrayTip
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,
Ca marche impeccable
merci encore.
Je suis arrivé exactement au résultat que je recherchais grâce à la 2° solution de Tlem,
► Afficher le texte

- sylvanie
- Niveau 11
- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [R] Lire l'état d'un TrayTip
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é ?
- 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é ?
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Re: [R] Lire l'état d'un TrayTip
Effectivement, ça permet plus de flexibilité.
Pour le post de ZDS, ce matin en lisant vos réponse je n'en avais qu'une...
Pour le post de ZDS, ce matin en lisant vos réponse je n'en avais qu'une...