Mira aquí te dejo este code que tenía de prueba y te podría servir para lo que quieres. Éste es para que cuando minimizes la ventana, se haga invisible y apasresca en el systray.
'Api SetForegroundWindow Para traer la ventana al frente
Private Declare Function _
SetForegroundWindow _
Lib "user32" (ByVal hwnd As Long) As Long
'Estructura NOTIFYICONDATA
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
'Constantes para las acciones
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
'Constantes para los botones y le mouse (mensajes)
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDBLCLK = &H206
'Función Api Shell_NotifyIcon
Private Declare Function Shell_NotifyIcon _
Lib "shell32" _
Alias "Shell_NotifyIconA" ( _
ByVal dwMessage As Long, _
pnid As NOTIFYICONDATA) As Boolean
'variable para la estructura NOTIFYICONDATA
Dim systray As NOTIFYICONDATA
Private Sub Form_Activate()
PonerSystray
End Sub
Private Sub Form_MouseMove( _
Button As Integer, _
Shift As Integer, _
X As Single, Y As Single)
Dim msg As Long
If (Me.ScaleMode = vbPixels) Then
msg = X
Else
msg = X / Screen.TwipsPerPixelX
End If
Select Case msg
Case WM_LBUTTONDBLCLK
'Si hacemos doble click con el botón izquierdo restauramos el form
Me.WindowState = vbNormal
Call SetForegroundWindow(Me.hwnd)
Me.Show
Case WM_RBUTTONUP
Call SetForegroundWindow(Me.hwnd)
'Si hacemos Click con el boton derecho mostramos el popup Menu
Me.PopupMenu Me.mnuPopUp
Case WM_LBUTTONUP
End Select
End Sub
Private Sub RemoverSystray()
Shell_NotifyIcon NIM_DELETE, systray
End Sub
Private Sub Form_Resize()
If (Me.WindowState = vbMinimized) Then Me.Hide
End Sub
Private Sub Form_Unload(Cancel As Integer)
'cuando descargamos el form removemos el Icono del systray
RemoverSystray
End Sub
Private Sub PonerSystray()
With systray
'Tamaño de la estructura systray
.cbSize = Len(systray)
'Establecemos el Hwnd, en este caso del formulario
.hwnd = Me.hwnd
.uId = vbNull
'Flags
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
'Establecemos el mensaje callback
.ucallbackMessage = WM_MOUSEMOVE
'establecemos el icono, en este caso el que tiene el form, puede ser otro
.hIcon = Me.Icon
'Establecemos el tooltiptext
.szTip = Me.Caption & vbNullChar
'Ponemos el icono en el systray
Shell_NotifyIcon NIM_ADD, systray
End With
End Sub
Y éste es para que cuando le des al botón cerrar, solamente se haga invisible la ventana.. es decir no se cierra.
Private Sub Form_Unload(Cancel As Integer)
Me.Visible = False
Cancel = 1
Espero que con esto resuelva tu pregunta, también intenta buscar por RecursosVisual
Basic a ver si hayas más.