How to Utilisation de la barre d'état système à partir de Visual Basic directement

Ancien nº de publication de cet article : F176085
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Résumé
Cet article démontre comment exploiter au maximum la barre d'état système Windows à l'aide de Visual Basic. Ce programme permet de placer une icône de votre choix dans la barre d'état système qui affichera une Info-bulles de votre choix quand la souris se pose dessus, restaure l'application quand vous cliquez dessus et affiche un menu déroulant si vous cliquez dessus avec le bouton droit. Tout cela est possible grâce à la capacité de Visual Basic de traiter directement les rappels, donc à optimiser l'utilisation de la fonction Shell_NotifyIcon qui est exportée par le fichier Shell32.dll.
Plus d'informations
Il est possible d'ajouter l'exemple suivant à n'importe quel projet Visual Basic doté d'une forme et d'un module standard au minimum.

Exemple pas à pas :

  1. Ajoutez le code suivant à la section des déclarations d'un module standard dans votre projet :
       'type défini par l'utilisateur requis par Shell_NotifyIcon API call   Public Type NOTIFYICONDATA   cbSize As Long   hwnd As Long   uId As Long   uFlags As Long   uCallBackMessage As Long   hIcon As Long   szTip As String * 64   End Type   'constantes requises par l'appel API Shell_NotifyIcon :   Public Const NIM_ADD = &H0   Public Const NIM_MODIFY = &H1   Public Const NIM_DELETE = &H2   Public Const NIF_MESSAGE = &H1   Public Const NIF_ICON = &H2   Public Const NIF_TIP = &H4   Public Const WM_MOUSEMOVE = &H200   Public Const WM_LBUTTONDOWN = &H201     'Button down   Public Const WM_LBUTTONUP = &H202       'Button up   Public Const WM_LBUTTONDBLCLK = &H203   'Double-click   Public Const WM_RBUTTONDOWN = &H204     'Button down   Public Const WM_RBUTTONUP = &H205       'Button up   Public Const WM_RBUTTONDBLCLK = &H206   'Double-click   Public Declare Function SetForegroundWindow Lib "user32" _   (ByVal hwnd As Long) As Long   Public Declare Function Shell_NotifyIcon Lib "shell32" _   Alias "Shell_NotifyIconA" _   (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean   Public nid As NOTIFYICONDATA
  2. Ajoutez le code suivant à n'importe quelle forme de votre projet que vous souhaitez attribuer à l'icône de la barre d'état système de votre application :
       Private Sub Form_Load()   'la forme doit être entièrement visible avant d'appeler Shell_NotifyIcon   Me.Show   Me.Refresh   With nid    .cbSize = Len(nid)    .hwnd = Me.hwnd    .uId = vbNull    .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE    .uCallBackMessage = WM_MOUSEMOVE    .hIcon = Me.Icon .szTip = "Your ToolTip" & vbNullChar   End With   Shell_NotifyIcon NIM_ADD, nid   End Sub   Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As   _      Single, Y As Single)   'cette procédure reçoit les rappels de l'icône de barre d'état système.   Dim Result As Long   Dim msg As Long    'the value of X will vary depending upon the scalemode setting    If Me.ScaleMode = vbPixels Then     msg = X    Else     msg = X / Screen.TwipsPerPixelX    End If    Select Case msg     Case WM_LBUTTONUP                  '514 restore form window      Me.WindowState = vbNormal      Result = SetForegroundWindow(Me.hwnd)      Me.Show Case WM_LBUTTONDBLCLK     '515 restore form window      Me.WindowState = vbNormal      Result = SetForegroundWindow(Me.hwnd)      Me.Show     Case WM_RBUTTONUP                  '517 display popup menu      Result = SetForegroundWindow(Me.hwnd)      Me.PopupMenu Me.mPopupSys    End Select   End Sub   Private Sub Form_Resize()    'Nécessaire pour assurer que la fenêtre réduite soit masquée    If Me.WindowState = vbMinimized Then Me.Hide   End Sub   Private Sub Form_Unload(Cancel As Integer)    'cela supprime l'icône de la barre d'état système    Shell_NotifyIcon NIM_DELETE, nid   End Sub   Private Sub mPopExit_Click()    'appelée quand l'utilisateur clique sur le menu contextuel Exit command    Unload Me   End Sub   Private Sub mPopRestore_Click()    'appelée quand l'utilisateur clique sur le menu contextuel Restore command    Me.WindowState = vbNormal    Result = SetForegroundWindow(Me.hwnd)    Me.Show    End Sub
  3. Donnez les paramètres de propriétés suivants à la forme à laquelle vous avez ajouté le code ci-dessus :
     Propriété    Exemple de paramètres requis pour la barre d'état système ------------------------------------------------------------------------------ Icon       = L'icône que vous souhaitez afficher dans la barre d'état système. Minbutton  = True  ShownInTaskbar = False
  4. Ajoutez les options de Menu suivantes à la même forme à l'aide du Créateur de menus :
     Caption          Name         Enabled   Visible   Position --------------------------------------------------------- &SysTray         mPopupSys    True      False     Main Level &Restore         mPopRestore  True      True      Inset one &Exit            mPopExit     True      True      Inset one
Vous pouvez ajouter des options de menu supplémentaires si nécessaire.

Souplesse de barre d'état système

Vous pouvez modifier l'Info-bulles qui s'affiche sur l'icône de la barre d'état système en modifiant la ligne suivante dans la procédure Form_Load :
 .szTip = "Your ToolTip" & vbNullChar
Remplacez "Your ToolTip" par le texte que vous souhaitez afficher.

Vous pouvez modifier l'Icône qui s'affiche dans la barre d'état système en modifiant la ligne suivante dans la procédure Form_Load :
 .hIcon = Me.Icon
Remplacez Me.Icon par n'importe quelle Icône de votre projet.

Après utilisation de la constante NIM_ADD, vous pouvez modifier n'importe quel paramètre de barre d'état système à tout moment, en réassignant les valeurs dans la variable nid puis en utilisant la variation suivante de l'appel API Shell_NotifyIcon :
 Shell_NotifyIcon NIM_MODIFY, nid.
Cependant, si vous souhaitez recevoir le rappel d'une autre façon, vous devrez supprimer l'icône courante en utilisant d'abord "Shell_NotifyIcon NIM_Delete, nid" car la fonction NIM_Modify n'acceptera pas une nouvelle forme Hwnd, ou vous devrez ajouter une autre Icône à la barre d'état système pour la nouvelle forme à l'aide de "Shell_NotifyIcon NIM_ADD, nid", après avoir rempli le type nid avec les nouvelles formes Hwnd. Vous pouvez également déclarer des copies distinctes du type nid pour chaque forme pour laquelle vous souhaitez afficher une icône dans la barre d'état système Windows, puis les modifier dans chaque événement d'activation des formes à l'aide de la séquence NIM_DELETE et NIM_ADD.
Références
Pour plus d'informations sur l'utilisation de la barre d'état système à partir de Visual Basic 4.0 ou d'une version précédente, consultez l'article suivant dans la Base de connaissances Microsoft :
149276 How to Utiliser les Icônes avec la barre d'état système Windows 95
Barre des tâches kbVBp500 kbVBp600 kbdse kbDSupport kbVBp kbVBp400
Propriétés

ID d'article : 176085 - Dernière mise à jour : 12/05/2015 08:09:12 - Révision : 4.0

Microsoft Visual Basic 6.0 Édition initiation, Microsoft Visual Basic 5.0 Édition professionnelle

  • kbnosurvey kbarchive kbgrpvbdb kbhowto kbvbp500 kbvbp600bug KB176085
Commentaires