# SystemTray ToolTip



## keiler (5. März 2003)

Hey Leute
Wie bekomme ich es hin, daß sich ein Tooltip, der sich über dem Icon eines Programmes in der Systemtray öffnet, ständig aktualisiert?
Ich habe da derzeit eine Funktion stehen, die die Zeit ausliest und anzeigt. Allerdings steht da diese Uhrzeit die ganze Zeit da. Sie wird erst aktualisiert, sobald ich das Programm wieder maximiert habe. Nach einem weiteren Minimieren steht zwar die "aktuellere" Uhrzeit da, jedoch bleibt diese wiederum stehen. Kann mir da jemand helfen, wie ich so etwas genauer angehen könnte?
Danke im Vorraus!


----------



## CyRo (7. März 2003)

> _Original geschrieben von keiler _
> *Hey Leute
> Wie bekomme ich es hin, daß sich ein Tooltip, der sich über dem Icon eines Programmes in der Systemtray öffnet, ständig aktualisiert?
> Ich habe da derzeit eine Funktion stehen, die die Zeit ausliest und anzeigt. Allerdings steht da diese Uhrzeit die ganze Zeit da. Sie wird erst aktualisiert, sobald ich das Programm wieder maximiert habe. Nach einem weiteren Minimieren steht zwar die "aktuellere" Uhrzeit da, jedoch bleibt diese wiederum stehen. Kann mir da jemand helfen, wie ich so etwas genauer angehen könnte?
> Danke im Vorraus! *



Ich kann dir zwar nicht helfen aber habe eine frage: Welchen Befehl nimmst du um das Programm zu Maxi/Minimieren ??? Ich habe VB .NET und habe noch keinen Befehl dafür gefunden. Danke schonma im Vorraus


----------



## keiler (8. März 2003)

das hier steht bei mir drinnen bzgl. minimieren (hab ich mal auf so einer anderen tutorial seite gefunden). Du musst eben eben noch einen Button mit der Bezeichnung cmdMinimizeMe erstellen.


```
'Declare a user-defined variable to pass to the Shell_NotifyIcon
'function.
Private 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

'Declare the constants for the API function. These constants can be
'found in the header file Shellapi.h.

'The following constants are the messages sent to the
'Shell_NotifyIcon function to add, modify, or delete an icon from the
'taskbar status area.
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2

'The following constant is the message sent when a mouse event occurs
'within the rectangular boundaries of the icon in the taskbar status
'area.
Private Const WM_MOUSEMOVE = &H200

'The following constants are the flags that indicate the valid
'members of the NOTIFYICONDATA data type.
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

'The following constants are used to determine the mouse input on the
'the icon in the taskbar status area.

'Left-click constants.
Private Const WM_LBUTTONDBLCLK = &H203   'Double-click
Private Const WM_LBUTTONDOWN = &H201     'Button down
Private Const WM_LBUTTONUP = &H202       'Button up

'Right-click constants.
Private Const WM_RBUTTONDBLCLK = &H206   'Double-click
Private Const WM_RBUTTONDOWN = &H204     'Button down
Private Const WM_RBUTTONUP = &H205       'Button up

'Declare the API function call.
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

'Dimension a variable as the user-defined data type.
Dim nid As NOTIFYICONDATA


Private Sub cmdMinimizeMe_Click()
   WindowState = vbMinimized
   Visible = False
End Sub

' Note: This will be called after the "WindowState = vbMinimized" line. This is not in cmdMinimizeMe_Click() because there are still other ways to minimize the application.
Private Sub Form_Resize()
   If Me.WindowState = vbMinimized Then
       'Set the individual values of the NOTIFYICONDATA data type.
       nid.cbSize = Len(nid)
       nid.hWnd = Me.hWnd
       nid.uId = vbNull
       nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
       nid.uCallBackMessage = WM_MOUSEMOVE
       nid.hIcon = Me.Icon ' This is the icon that appears in the system tray
       nid.szTip = "[Enter tooltip here]" & vbNullChar

       'Call the Shell_NotifyIcon function to add the icon to the taskbar
       'status area.
       Shell_NotifyIcon NIM_ADD, nid
   End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

   Dim msg As Long
   Dim sFilter As String
   msg = X / Screen.TwipsPerPixelX
   
   Select Case msg
       ' Select your own event to use
       Case WM_LBUTTONUP
           WindowState = vbNormal
           Visible = True
           
           ' Remove the system tray icon
           Shell_NotifyIcon NIM_DELETE, nid
       
       Case WM_RBUTTONDOWN
           Dim ToolTipString As String
           ToolTipString = InputBox("Enter the new ToolTip:", _
                                 "Change ToolTip")

           If ToolTipString <> "" Then
               nid.szTip = ToolTipString & vbNullChar
               Shell_NotifyIcon NIM_MODIFY, nid
           End If
   End Select
End Sub
```


----------

