1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Option Explicit
Private Const APP_SYSTRAY_ID = 999
Private Const NOTIFYICON_VERSION = &H3

Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_STATE = &H8
Private Const NIF_INFO = &H10

Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIM_SETFOCUS = &H3
Private Const NIM_SETVERSION = &H4
Private Const NIM_VERSION = &H5

Private Const NIS_HIDDEN = &H1
Private Const NIS_SHAREDICON = &H2

'icone
Private Const NIIF_NONE = &H0
Private Const NIIF_INFO = &H1
Private Const NIIF_WARNING = &H2
Private Const NIIF_ERROR = &H3
Private Const NIIF_GUID = &H5
Private Const NIIF_ICON_MASK = &HF
Private Const NIIF_NOSOUND = &H10
Private Const WM_USER = &H400
Private Const NIN_BALLOONSHOW = (WM_USER + 2)
Private Const NIN_BALLOONHIDE = (WM_USER + 3)
Private Const NIN_BALLOONTIMEOUT = (WM_USER + 4)
Private Const NIN_BALLOONUSERCLICK = (WM_USER + 5)
Private Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(7) As Byte
End Type

Private Type NOTIFYICONDATA
  cbSize As Long
  hWnd As Long
  uID As Long
  uFlags As Long
  uCallbackMessage As Long
  hIcon As Long
  szTip As String * 128
  dwState As Long
  dwStateMask As Long
  szInfo As String * 256
  uTimeoutAndVersion As Long
  szInfoTitle As String * 64
  dwInfoFlags As Long
  guidItem As GUID
End Type

Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Form in VB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Private Sub Form_Load()

   Text1.Text = "Esempio di balloon nella Tray " & _
                "Notification Area. Prova " & _
                "Ballon Tips"

   Command1.Caption = "Inserisci Icona nella Systray"
   Command2.Caption = "Visualizza Balloon Tip"
   Command2.Enabled = False
   Option1(1).Value = True

End Sub

Private Sub Form_Unload(Cancel As Integer)

   ShellTrayRemove

End Sub

Private Sub Command1_Click()

   Call ShellTrayAdd
   Command2.Enabled = True

End Sub

Private Sub Command2_Click()

   ShellTrayModifyTip GetSelectedOptionIndex()

End Sub

Private Sub ShellTrayAdd()

   Dim nid As NOTIFYICONDATA

   With nid

      .cbSize = Len(nid)
      .hWnd = Form1.hWnd
      .uID = APP_SYSTRAY_ID
      .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
      .dwState = NIS_SHAREDICON
      .hIcon = Form1.Icon
      .szTip = "Visualizza il Balloon Tip!" & Chr(0)
      .uTimeoutAndVersion = NOTIFYICON_VERSION

   End With

   Call Shell_NotifyIcon(NIM_ADD, nid)

   Call Shell_NotifyIcon(NIM_SETVERSION, nid)

End Sub

Private Sub ShellTrayRemove()

   Dim nid As NOTIFYICONDATA

   With nid
      .cbSize = Len(nid)
      .hWnd = Form1.hWnd
      .uID = APP_SYSTRAY_ID
   End With

   Call Shell_NotifyIcon(NIM_DELETE, nid)

End Sub

Private Sub ShellTrayModifyTip(nIconIndex As Long)

   Dim nid As NOTIFYICONDATA

   With nid
      .cbSize = Len(nid)
      .hWnd = Form1.hWnd
      .uID = APP_SYSTRAY_ID
      .uFlags = NIF_INFO
      .dwInfoFlags = nIconIndex
      .szInfoTitle = "Visualizza il Balloon Tip!" & Chr(0)
      .szInfo = Text1.Text
   End With

   Call Shell_NotifyIcon(NIM_MODIFY, nid)

End Sub

Private Function GetSelectedOptionIndex() As Long

   GetSelectedOptionIndex = Option1(0).Value * 0 Or _
                            Option1(1).Value * -1 Or _
                            Option1(2).Value * -2 Or _
                            Option1(3).Value * -3
End Function

Tags: , , , ,
Prissimo articolo [VB6] Funzione BEEP
Articolo precedente [VB6] Controllare connessione internet