RE:programa residente en memoria
Tienes q usar una funcion de la API llamada Shell_NotifyIcon
Aqui te va un cadigo de Ejemplo si deseas te envio el codigo completo a tu mail para q lo veas bien.
'Declaramos el tipo definido por el usuario
'q pasaremos a la funcion Shell_NotifyIcon
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 q son mensajes q se envian a la funcion
'Shell_NotifyIcon para añadir, borrar o modificar un icono
'en la barra de tareas.
Private Const NIM_ADD = &H0 'Añadirlo a la barra de tareas
Private Const NIM_DELETE = &H2 'Borrarlo de la barra de tareas
Private Const NIM_MODIFY = &H1 'Modificarlo
Private Const WM_MOUSEMOVE = &H200
'constantes de lo que queremos que muestre el icono
Private Const NIF_MESSAGE = &H1 'que nos envie un mensaje
Private Const NIF_ICON = &H2 'que muestre un icono
Private Const NIF_TIP = &H4 'que muestre un texto al posicionarnos encima
'Constantes para determinar el evento producido sobre el icono
'constantes click-Izq.
Private Const WM_LBUTTONDBLCLK = &H203 'Doble-click
Private Const WM_LBUTTONDOWN = &H201 'Button down
Private Const WM_LBUTTONUP = &H202 'Button up
'constantes click-Derecho.
Private Const WM_RBUTTONDBLCLK = &H206 'Doble-click
Private Const WM_RBUTTONDOWN = &H204 'Button down
Private Const WM_RBUTTONUP = &H205 'Button up
'Declaramos la llamada a la funcion de la API.
Private Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" _
(ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
'Creamos una variable del Tipo definido por el usuario.
Dim nid As NOTIFYICONDATA
Private Sub Form_Load()
Me.Hide ' Oculto el Form
nid.cbSize = Len(nid)
nid.hWnd = Form1.hWnd
nid.uId = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallBackMessage = WM_MOUSEMOVE 'mensaje que envia al pasar el mouse por encima
nid.hIcon = Form1.Icon 'icono mostrado en la barra
nid.szTip = "Controlador de Sistema " & vbNullChar
' llamamos a la funcion para añadirlo
Shell_NotifyIcon NIM_ADD, nid
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If UnloadMode = vbFormControlMenu Then
Hide
Cancel = 1
End If
End Sub
Private Sub Form_Terminate()
'Borramos el icono de la barra
Shell_NotifyIcon NIM_DELETE, nid
End
End Sub
Private Sub Form_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
'Este evento ocurre cuando el puntero del mouse esta dentro
'del area del icono ubicado en la barra de tareas.
Dim msg As Long
Dim sFilter As String
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDOWN
Case WM_LBUTTONUP
'Cuando el Evento sea un doble-click Izquierdo Mostramos el Formulario
Case WM_LBUTTONDBLCLK
Me.Show
'MenuT_Click 1
'Cuando el Evento sea un click derecho mostramos un menu contextuaal
Case WM_RBUTTONDOWN
PopupMenu MenuCon
Case WM_RBUTTONUP
Case WM_RBUTTONDBLCLK
End Select
End Sub