Создайте модуль:
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Public Const NIM_ADD = 0
Public Const NIM_MODIFY = 1
Public Const NIM_DELETE = 2
Public Const WM_MOUSEMOVE = &H200
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
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
В форме объявите:
Dim nid As NOTIFYICONDATA
Использование:
На форме, в процедуру события Form_MouseMove вставляем следующий код
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
Dim sFilter As String
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDOWN
'Здесь можете вставить тот код который вы хотите.
Case WM_LBUTTONUP
'Здесь можете вставить тот код который вы хотите.
Case WM_LBUTTONDBLCLK
'Здесь можете вставить тот код который вы хотите.
Case WM_RBUTTONDOWN
'Здесь можете вставить тот код который вы хотите.
'Например PopupMenu
Case WM_RBUTTONUP
'Здесь можете вставить тот код который вы хотите.
Case WM_RBUTTONDBLCLK
'Здесь можете вставить тот код который вы хотите.
End Select
Для добавления, модификации или удаления иконки применяются следующий код
' Добавить иконку формы в Traybar
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
nid.hIcon = Form1.Icon
nid.szTip = "Test" & vbNullChar
Shell_NotifyIcon NIM_ADD, nid
' Изменить иконку и tooltip
nid.hIcon = Form1.Icon
nid.szTip = "New Icon" & vbNullChar
Shell_NotifyIcon NIM_MODIFY, nid
' Удалить иконку из Traybar , обычно вставляется в процедуру события Terminate (на форме)
Shell_NotifyIcon NIM_DELETE, nid
Ответить
|