Highlights
All Snippets
Top 100 Snippets
Librarians
gbCodeLib

By Language
VB6
JavaScript
Perl
HTML
SQL
Java
DOS

GBIC >> Source Code >> Visual Basic >> Snippet

Put app icon in system tray


Private Declare Function Shell_NotifyIcon Lib "shell32.dll" ( ByVal dwMessage As Long , lpData As NOTIFYICONDATA) As Long
'Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

'These three constants specify what you want to do
Private Const NIM_Add = &H0
Private Const NIM_DELETE = &H2
Private Const NIM_MODIFY = &H1

Private Const NIF_ICON = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_TIP = &H4

Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_MOUSEMOVE = &H200
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205

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

Private IconData As NOTIFYICONDATA



Sub ShowApp()
    Me .WindowState = vbNormal
   Shell_NotifyIcon NIM_DELETE, IconData
    Me .Show
End Sub

Private Sub Form_Load()
With IconData
   .cbSize = Len(IconData)              ' The length of the NOTIFYICONDATA Type
   .hIcon = Me .Icon                     ' A reference to the form's icon
   .hwnd = Me .hwnd                      ' hWnd of the form
   .szTip = "My Tooltip" & Chr (0)       ' Tooltip String delimited with a Null character
   .uCallbackMessage = WM_MOUSEMOVE     ' The icon we're placing will send messages to the MouseMove event
   .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE     ' It will have message handling and a tooltip
   .uID = vbNull                        ' uID is not used by VB, so it's set to a Null value
End With
End Sub

Private Sub Form_MouseMove(Button As Integer , Shift As Integer , X As Single , Y As Single )
Dim Msg As Long
Msg = X / Screen.TwipsPerPixelX         ' The message Is passed to the X value
If Msg = WM_LBUTTONDBLCLK Then   ' The user has double-clicked your icon
    Call Command1_Click               ' Show the window
ElseIf Msg = WM_RBUTTONDOWN Then
    ' Right-click
    ' PopupMenu mnuPopup
    ' Popup the menu
End If
End Sub

Private Sub Form_Resize()
If Me .WindowState = 1 Then
    Call Shell_NotifyIcon(NIM_Add, IconData)
    Me .Hide
End If
End Sub

Private Sub Form_Unload(Cancel As Integer )
   Shell_NotifyIcon NIM_DELETE, IconData
End Sub