Systray + balloon en un seul contrôle utilisateur

Soyez le premier à donner votre avis sur cette source.

Vue 5 602 fois - Téléchargée 868 fois

Description

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.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 23 juillet 2014
Statut
Membre
Dernière intervention
23 juillet 2014

Bonjour à tous, je suis nouveau en VB, et d'essayer de voir le projet de mon ami. il se sert de ce systray.

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 :)
Messages postés
300
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
27 mai 2012
3
Bonjour,
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,
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
lol PCPT, mes excuses (*)
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)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
a voir ce que contient ce rapport (voir journal des evenements applicatifs)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
truc tordu... beh merci ^^

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...
Afficher les 32 commentaires

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.