How to Minimize/Send an App Icon to System Tray in Visual Basic 6
The following code snippet allows to manipulate the system tray by adding your apps icon when you minimize the form and restore when you double click on the app's icon on the system tray area.
This sub sends the icon to system tray.
When the minimize button is clicked it will hide the form and send icon to system tray.
When the app icon on the system tray is doubled click it will show the form and delete the icon from the system tray.
Option Explicit
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
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const WM_LBUTTONDBLCLK = &H203 'Double-click
Public Const WM_LBUTTONDOWN = &H201 'Button down
Public Const WM_LBUTTONUP = &H202 'Button up
Public Const WM_RBUTTONDBLCLK = &H206 'Double-click
Public Const WM_RBUTTONDOWN = &H204 'Button down
Public Const WM_RBUTTONUP = &H205 'Button up
Public 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
This sub sends the icon to system tray.
Sub minToTray()
'------------------------
'--- create tray icon ---
'------------------------
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 = Main.Icon 'the icon will be your Form1 project icon
nid.szTip = TrayName 'tip text
'adds the icon to the taskbar area
Shell_NotifyIcon NIM_ADD, nid
End Sub
'This is Tip text when hovering on the system tray icon
Function TrayName() as String
TrayName = App.EXEName & " Ver." & App.Major & "." & App.Minor & vbCrLf & App.CompanyName & vbNullChar
End Function
When the minimize button is clicked it will hide the form and send icon to system tray.
Private Sub imgMin_Click()
'Hides main form and shows mini mode
Me.Hide
minToTray 'send icon to system tray
End Sub
When the app icon on the system tray is doubled click it will show the form and delete the icon from the system tray.
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
Case WM_LBUTTONDOWN
Case WM_LBUTTONUP
Case WM_LBUTTONDBLCLK
Me.Show
Me.WindowState = vbNormal
'Deletes the tray icon when the form is shown
Shell_NotifyIcon NIM_DELETE, nid ' del tray icon
Case WM_RBUTTONDOWN
'Show popup menu
PopupMenu mExit
Case WM_RBUTTONUP
Case WM_RBUTTONDBLCLK
End Select
End Sub