Ces procédures servent à ne pas afficher le bouton dans la barre de tâches (*), et quand même afficher le prog dans le Systray.
Il faut créer un contrôle pour recevoir l’évènement qui gèrera l’icône. Ce contrôle doit être invisible car l’évènement est le mousemove, et il ne faut pas que le passage de la souris perturbe la fonction.
J’ai choisi un pictureBox nommé « PicSystray » placé dans la FraBid invisible.
A mettre dans le Général du module:
‘Mise en systray
Type IconeTray
cbSize As Long ‘Taille de l’icône (en octets)
hwnd As Long ‘Handle du contrôle chargé de recevoir les messages envoyés lors des évènements sur l’icône (clics, doubles-clics…)
uID As Long ‘Identificateur de l’icône
uFlags As Long
uCallbackMessage As Long ‘Messages à renvoyer
hIcon As Long ‘Handle de l’icône
szTip As String * 64 ‘Texte à mettre dans la bulle d’aide
End Type
Global IconeT As IconeTray
Declare Function Shell_NotifyIcon Lib « shell32 » Alias « Shell_NotifyIconA » (ByVal dwMessage As Long, pnid As IconeTray) As Boolean
‘Constantes nécessaires
Public Const AJOUT = &H0
Public Const MODIF = &H1
Public Const SUPPRIME = &H2
Public Const MOUSEMOVE = &H200
Public Const MESSAGE = &H1
Public Const Icone = &H2
Public Const TIP = &H4
Public Const DOUBLE_CLICK_GAUCHE = &H203
Public Const BOUTON_GAUCHE_POUSSE = &H201
Public Const BOUTON_GAUCHE_LEVE = &H202
Public Const DOUBLE_CLICK_DROIT = &H206
Public Const BOUTON_DROIT_POUSSE = &H204
Public Const BOUTON_DROIT_LEVE = &H205
A mettre dans le Load de la Form:
‘——————————Icône dans le Systray
IconeT.cbSize = Len(IconeT) ‘Taille de l’icône en octet
IconeT.hwnd = PicSystray.hwnd ‘Handle de l’application (pour qu’elle reçoive les messages envoyés lors d’un clic, double-clic…
IconeT.uID = 1& ‘Identificateur de l’icône
IconeT.uFlags = Icone Or TIP Or MESSAGE
IconeT.uCallbackMessage = MOUSEMOVE ‘Renvoyer les messages concernant l’action de la souris
IconeT.hIcon = Me.Icon ‘Mettre en icône l’image celle de la form
IconeT.szTip = me.caption & Chr$(0) ‘Texte de la bulle d’aide
‘Appel de la fonction pour mettre l’icône dans le système tray
Shell_NotifyIcon AJOUT, IconeT
‘Me.Hide ‘Cache la fenêtre
App.TaskVisible = False ‘Retire le bouton de l’application de la barre des tâches (*)
A mettre dans le resize de la form:
‘————————-Permet de transformer le minimize en hide.
If Me.WindowState = 1 Then
Me.Hide
DoEvents
Me.WindowState = 0
End If
A mettre dans le MouseMouve de PicSystray:
‘souris sur l’icône placée dans le système tray
Static rec As Boolean, msg As Long
msg = X / Screen.TwipsPerPixelX
If Not rec Then
rec = True
Select Case msg
Case DOUBLE_CLICK_GAUCHE:
Case BOUTON_GAUCHE_POUSSE:
If Me.Visible Then
Me.Hide
Else
Me.Show
End If
Case BOUTON_GAUCHE_LEVE:
Case DOUBLE_CLICK_DROIT:
Case BOUTON_DROIT_POUSSE:
Case BOUTON_DROIT_LEVE:
End Select
rec = False
End If
A chaque fois que l’on veut modifier, Ex: le ToolTipText et l’icône:
IconeT.szTip = « Mon ToolTipText à moi… » & Chr$(0) ‘Texte de la bulle d’aide
IconeT.hIcon = Me.Icon ‘Mettre en icône celle de la form
Shell_NotifyIcon MODIF, IconeT
Cela peut servir à avoir une icône animée (par Ex: gyrophare) si l’on met ces lignes dans une tempo.
A mettre dans l’Unload de la form (pour que le SysTray soit rafraîchi sans avoir à passer la souris dessus):
Shell_NotifyIcon SUPPRIME, IconeT