Ok...ora posto tutto,spero possiate aiutarmi.

Questo è il mio MDIForm_Load:
codice:
Private Sub MDIForm_Load()
    trasparenza = 255 ' Imposto la trasparenza al massimo
    ImpostaToolBar tbTop, iml16a  ',iml16, Non usare in quanto cambia le immagini inserite con quelle di iml16!

    Dim rs As ADODB.Recordset
    Dim sSQL As String
    
    CIni.FinestraLeggiPosizione Me

    ' così posso usare l'Imagelist in tutto il progetto
    ' riferendomi solamente alla varibali oggetto 'IML'
    Set IML = iml16
    
    sb.Panels("user").Tag = gsUserName
    sb.Refresh
    
    InitTrayIcon picTray, picTray.Picture, Me.Caption 
    
    '---Sto provando ad attivare un panello di comando.
    '---Pannello attivo,ora aggionare ad ogni cambio utente.
    '---Problema Risolto.
    
    Me.sb.Panels(1).Text = gsUserName
    
    If gsUserName = "Administrator" Then
      ElseIf gsUserName = "administrator" Then
      frmMain.Smmodifica.Visible = True
      Else
      frmMain.Smmodifica.Visible = False
    End If
End Sub
Questo è invece il mio modulo.bas con la funzione:
codice:
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 GestPwd As NOTIFYICONDATA
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_LBUTTONDOWN = &H201     'Button down
Public Const WM_LBUTTONUP = &H202       'Button up
Public Const WM_LBUTTONDBLCLK = &H203   'Double-click
Public Const WM_RBUTTONDOWN = &H204     'Button down
Public Const WM_RBUTTONUP = &H205       'Button up
Public Const WM_RBUTTONDBLCLK = &H206   'Double-click
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Function HyperJump(ByVal URL As String) As Long
   HyperJump = ShellExecute(0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus)
End Function

Public Sub InitTrayIcon(callback As Object, icon As IPictureDisp, testo As String, f As Form)
Rem Il form DEVE essere visibile prima di chiamare la Shell_NotifyIcon
  With GestPwd
    .cbsize = Len(GestPwd)
    .hwnd = callback.hwnd
    .uid = vbNull
    .uflags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    .ucallbackmessage = WM_MOUSEMOVE
    .hicon = icon.Handle
    .sztip = testo & vbNullChar
  End With
  gbIconInTray = True
  Shell_NotifyIcon NIM_ADD, GestPwd

End Sub
Ok.Ora se lo lascio così mi da questi errori:
in MDIForm_Load() quando arriva a "InitTrayIcon..." mi dice argomento non facoltativo.
Allora ho provato a fare così:
codice:
Call InitTrayIcon(callback, icon, testo, f)
E mi dice che callback è una variabile non definita.
se la dichiaro con
Dim callback as object
dim t as string
dim f as form
alla fine mi da l'errore "91" che sarebbe quello che ho fatto vedere prima in figura.
Mi sai aiutare?penso di aver fatto un casino!!

l'errore 91 si riferisce alla funzione InitTrayIcon ed esattamente a
.hwnd = callback.hwnd

Cosa devo fare?