Et oui, encore une appli qui traite du SysTray, cette icône que l'on place à côté de l'horloge, dans la barre des tâches.
Mon challenge était de regrouper toute la gestion dans un objet unique, un User Control, afin de faciliter son utilisation.
La difficulté vient du fait que, à partir du moment où l'on veut faire du SubClassing, il faut utiliser l'instruction "AddressOf" qui ne peut fonctionner que dans un module.
Grace à l'astuce de EbartSoft (lien dans la source), on peut le faire n'importe où.
Cette version gère aussi les Balloons, avec des textes UniCode, donc utilisable avec n'importe quelle page de code (international)
Là encore, la difficulté, c'est que ces Ballons ne fonctionnent pas comme décrit dans la Doc de Microsoft :
- Problème de la taille de la structure :
La structure originale NOTIFYICONDATAW a un paramètre final qui sert à la définition d'une icône personnalisée dans le Balloon.
Or, la fonction API qui va avec, Shell_NotifyIconW, n'accepte pas cette longueur de structure.
Adieu, donc, la personnalisation de l'icône.
Je pense que cela ne doit pouvoir fonctionner que sous Vista (à confirmer)
- Problème de TimeOut :
La structure NOTIFYICONDATAW prévoit un paramètre dans lequel on précise le TimeOut (le temps au bout duquel le balloon doit se refermer) en millisecondes.
Or, cette technique ne fonctionne pas.
Il a donc fallu avoir recours à un Timer (API) pour gérer cette fonctionalité.
Ce contrôle utilisateur offre aussi la possibilité de faire clignoter (*) l'icône du SysTray
(*) affiche en alternance deux icônes
Conclusion :
Ce code ne peut fonctionner que sur les version Windows 2000 et supérieure.
J'ai un problème qui a besoin de votre orientation,
Mon code Entrez le "CallBackProc" et "CrashTimerProc()", et je vois que la valeur de lShellTrayHandle est 196644
de ce fait, après avoir terminé "CrashTimerProc()", "Follow" aura la valeur false, et mon code juste boucle encore et encore.
pouvez-vous me donner un guide comment résoudre ce problème?
Désolé pour mon mauvais français, je suis en utilisant Google translate :)
en effet moi aussi j'ai été confronté au crash lors de la fermeture du programme contenant le Systray.
Le problème venait du fait que dans ma méthode quitter je faisait un gros "END" ^^
il faut faire un "Unload(Me)" et du coup on a plus le problème, le subclassing s'arrête proprement.
j'espère avoir résolue le problème de CLAIVAH
cordialement,
Je ne voulais pas dire ça, disons plutôt "de compréhension difficile" ;-)
(*) PCPT est l'instigateur de cette technique dans cette source, ma solution initiale n'étant pas top (voir historiques)
pas non plus eu d'erreur quand j'avais testé, si çà passe sur tous les PC sauf 1, faut peut-être chercher la cause ailleurs...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.