Véritable méthode pour minimiser dans le systray ?

Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007 - 22 févr. 2007 à 10:43
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 - 4 mai 2007 à 19:49
Bonjour tout le monde !

Je
travaille sur un projet (Open-Source à sa sortie) dont la form
principale peut se réduire dans le systray (rien de bien compliqué pour
le moment)

Le problème c'est que je ne veux pas passer par la
méthode classique, c'est à dire intercepter la fermeture de la form, la
cacher et faire apparaître une icône dans le systray...

Je cherche
le moyen utilisé par MSN ou encore Google Talk qui minimise réellement
la form dans la systray. En effet, sur MSN ou Gtalk, l'animation de redimmenssionement va
directement vers l'horloge, alors qu'avec la méthode classique la fenêtre est minimisée sur la taskbar comme les fenêtres normales.

Je pense que c'est surement un appel sur une API particulière.

Je
me suis donc rappellé d'une source d'EBArtSoft pour voir les appels aux api (http://www.vbfrance.com/codes/VOIR-APPELS-API-PARAMS-PROG_22687.aspx), mais
je n'ai plus que vb 2005, j'ai bien essayer d'importer la source mais
rien a faire les dll du prog ne veulent pas fonctionner.

Je
viens donc chercher de l'aide, est ce qu'une personne peux tu regarder si en utilisant le programme d'EBArtSoft quelle API est suceptible d'être utilisée ? Ou si quelqu'un connait
directement la solution, ou encore si on pouvait me rediriger vers
une personne qui serait capable de m'aider ?

Merci @ bientôt, Pym

PS : J'ai envoyé un message similaire à EBArtSoft, mais je n'ai pas eu de réponse donc je suis venu poster ici.

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2007 à 11:37
par "minimise reelement dans la Systray"...

en gros, tu veux dire que si tu réduit la fenetre, en pressant le bouton minimize [-]  en haut a droite des fenetres, ca devrait passer en Systray....   ??

regarde la source :
http://www.vbfrance.com/codes/MODULE-SUBCLASSER_38442.aspx

dans la Form exemple, on fait :
If uMsg WM_SYSCOMMAND And wParam SC_MINIMIZE Then
    MsgBox "Reduction de la fenêtre interceptée, et annulée.", vbInformation
EndIf

NB. pas au courant des evenements a ta dispo en .NET, tu a peut etre deja ce qu'il te faut.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
22 févr. 2007 à 13:04
Bonjour


Tu peux utiliser l'event Resize de ta form et vérifier l'éata de WindowState=Minimized

Si c'est le cas : Tu affiche ton tray icon (si tu l'avais masqué, TrayIcon dans la toolbox) et tu fait me.visible=false

Il est plus facile de batiser quelqu'un que de la convertir.(surtout en programmation)
VB (6, A excel, .NET), C++, C#.Net
Mon site
0
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
22 févr. 2007 à 14:28
Non pas du tout, j'ai dû mal m'exprimer !
Je ne cherche pas à savoir comment on fait pour minimiser un prog en systray, je connais la méthode depuis longtemps.

Ce que je cherche c'est LA méthode que à ma connaissance seulement 2 progs utilisent : MSN Messenger et Google Talk (il y en a surement d'autres). Quand on clique sur la croix de fermeture le programme se minimise dans la systray directement. L'animation de réduction donne l'impression d'aller sur l'horloge.

Hors, la méthode que j'utilise (celle que vous me proposez) minimise la fenêtre dans la taskbar (comme si on minimisait normallement), cache la fenêtre, et fait apparaître l'icône.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 févr. 2007 à 23:12
c'est quoi que tu veux ?

l'animation ?  voir cette source (VB6)

intercepter la fermeture et la détourner ? utilises les evenements de ta Form (QueryUnload en VB6)

pour savoir la méthode exacte qu'ils utilisent, tu peux utiliser la source de EB, pour connaitre les APIs utilisées, et lire de la doc, ca promet d'être coton ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
23 févr. 2007 à 00:19
"c'est quoi que tu veux ?"
Purée je suis à ce point pas clair ? :P
Y'a juste à relire mon précédent message : "Ce que je cherche..."

Merci pour le lien de l'animation mais je ne peux pas vraiment voir à quoi ça ressemble je n'ai plus VB6 depuis belle lurette.
Pareil pour la source d'EB que je ne peux utiliser..

Par contre si ça te déranges pas de me compiler tout ça je peux t'envoyer un MP avec mon mail :)

Merci @+
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
23 févr. 2007 à 12:28
Bonjour


Intercepte l'event Closing de t form, puis assigne false à e.Cancel, et fait ta réduction.

Il est plus facile de batiser quelqu'un que de la convertir.(surtout en programmation)
VB (6, A excel, .NET), C++, C#.Net
Mon site
0
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
23 févr. 2007 à 16:09
NHenry --> Merci mais ce n'est pas du tout mon problème.. Comme je le dis depuis le premier post, je sais faire ce que tu me dis depuis des lustres..
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
4 mai 2007 à 19:49
ce qu'il veut faire (t'es à 100% clair mais personne te comprend lol) : c'est pouvoir réduire l'application vers le systray : que l'effet (l'animation) aille de la form au systray ...

en clair, que le petit effet Windows quand on réduit une fenetre aille vers le systray, au lieu d'aller vers le bas (barre de tache)

voilà j'espère qu'ils comprendront avec ça... sinon moi je ne connais pas la solution désolé
0
Rejoignez-nous