Inserire l'Icona del Programma sulla SysTray
In un modulo Bas inserire:
Option Explicit
Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Type NOTIFYICONDATA
cbze As Long
hwnd As Long
exid As Long
flags As Long
backmessage As Long
icon As Long
tip As String * 64
End Type
Public Const IcD_ADD = &H0&
Public Const IcD_MODIFY = &H1
Public Const IcD_DELETE = &H2
Public Const IcD_BACKMESSAGE = &H1
Public Const IcD_ICON = &H2
Public Const IcD_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
Public IcD As NOTIFYICONDATA
'Crea l'Icona sulla SysTray
Public Sub CreaIcoSys(pic As PictureBox)
Dim lresult As Long, IcDm_ADD As Long
IcD.cbze = Len(IcD)
IcD.hwnd = pic.hwnd
IcD.exid = 0
IcD.exid = IcD.exid + 1
IcD.flags = IcD_BACKMESSAGE Or IcD_ICON Or IcD_TIP
'la Picture deve essere in formato .ico di dimensioni 16x16 o di un loro multiplo
IcD.icon = pic.Picture
'Tip da visualizzare al passaggio del mouse sull'icona sulla SysTray
IcD.tip = "CostiInternet © Franco Sciarrone" + Chr$(0)
IcD.backmessage = WM_MOUSEMOVE
lresult = Shell_NotifyIconA(IcDm_ADD, IcD)
End Sub
'Distrugge l'Icona sulla SysTray
Public Sub DelIcoSys()
Shell_NotifyIconA IcD_DELETE, IcD
End Sub
In un Form mettere una PictureBox e collegare alla sua proprietą Picture
un'immagine in formato *.ico, di dimensioni 16x16 o di un loro multiplo.
Collocare una Label al centro del Form.
Inserire questo codice d'esempio:
Option Explicit
Private Sub Form_Load()
CreaIcoSys Picture1
End Sub
Private Sub Form_Unload(Cancel As Integer)
DelIcoSys
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim tray As Long
tray = (X And &HFF) * &H100
Select Case tray
Case 0
'Sei sull'icona
Label1 = "Sei sull'icona"
Case &H2D00
'Doppio Click sinistro
Label1 = "Hai premuto il doppio click Sinistro"
Case &H5A00
'Doppio Click destro
Label1 = "Hai premuto il doppio click Destro"
Case &H1E00
'Bottone Sinistro
Label1 = "Hai premuto il bottone Sinistro"
Case &HF00
'Bottone Sinistro
Label1 = "Hai premuto il bottone Sinistro"
Case &H3C00
'Bottone Destro
Label1 = "Hai premuto il bottone Destro"
Case &H4B00
'Bottone Destro
Label1 = "Hai premuto il bottone Destro"
End Select
End Sub
Se si desidera che il Form sia invisibile ed all'icona sia collegato un menu, eseguire quanto segue.
In un Form mettere una PictureBox e collegare alla sua proprietą
Picture un'immagine in formato *.ico, di dimensioni 16x16 o di un loro multiplo.
Con l'Editor di Menu creare un Menu, inserire un unico menu con alcuni
sottomenu. Assegnare alla prima voce del menu la proprietą Name = mnuFile
ed all'ultima la proprietą Name = mnuChiudi.
Deselezionare la CheckBox Visible di mnuFile.
Mettere la proprietą del Form Visible=False.
Infine inserire questo codice d'esempio:
Option Explicit
Private Sub Form_Load()
CreaIcoSys Picture1
End Sub
Private Sub mnuChiudi_Click()
DelIcoSys
Unload Me
End
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim tray As Long
tray = (X And &HFF) * &H100
Select Case tray
'Case 0 'Sei sull'icona
' MsgBox "Sei sull'icona"
'Case &H2D00 'Doppio Click sinistro
' MsgBox "Hai premuto il doppio click Sinistro"
'Case &H5A00 'Doppio Click destro
' MsgBox "Hai premuto il doppio click Destro"
'Case &H1E00 'Bottone Sinistro
' MsgBox "Hai premuto il bottone Sinistro"
'Case &HF00 'Bottone Sinistro"
' MsgBox "Hai premuto il bottone Sinistro"
Case &H3C00
'Bottone Destro
PopupMenu mnuFile, vbPopupMenuRightButton, , , mnuChiudi
'Case &H4B00 'Bottone Destro
' MsgBox "Hai premuto il bottone Destro"
End Select
End Sub
Testato su: Windows 98, Windows Me, Windows 2000 Professional