' Для работы необходимо в форму добавить:
' две кнопки с именами Command1 и Command2,
' а также Microsoft Common Dialog Control 6.0 (SP3)
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
' Эти константы нужны для добавления, обновления
' и удаления иконки в SysTray
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
' Следующая константа нужна для показа всплывающей подсказки
' когда курсор наводится на иконку в SysTray
Private Const WM_MOUSEMOVE = &H200
Private Declare Function Shell_NotifyIcon Lib "shell32" _
Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, _
pnid As NOTIFYICONDATA) As Boolean
Dim nid As NOTIFYICONDATA
Private Sub Command1_Click()
' добавляем иконку от формы в SysTray
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 = "Текст всплывающей подсказки" & vbNullChar
' добавим иконку в SysTray
Shell_NotifyIcon NIM_ADD, nid
End Sub
Private Sub Command2_Click()
'Удаляем иконку из SysTray
Shell_NotifyIcon NIM_DELETE, nid
End Sub
Private Sub Form_Load()
'добавим названия действий на кнопки
Command1.Caption = "Добавить иконку"
Command2.Caption = "Удалить иконку"
End Sub
Private Sub Form_Terminate()
' при закрытии программы удаляем иконку из SysTray
Shell_NotifyIcon NIM_DELETE, nid
End Sub
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
CommonDialog1.DialogTitle = "Выбор иконки"
sFilter = "Иконка (*.ico)|*.ico"
sFilter = sFilter & "|Все файлы (*.*)|*.*"
CommonDialog1.Filter = sFilter
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
Form1.Icon = LoadPicture(CommonDialog1.FileName)
nid.hIcon = Form1.Icon
Shell_NotifyIcon NIM_MODIFY, nid
End If
Case WM_RBUTTONDOWN
Dim ToolTipString As String
ToolTipString = InputBox("Введите текст новой всплывающей подсказки:", _
"Смена текста всплывающей подсказки")
If ToolTipString <> "" Then
nid.szTip = ToolTipString & vbNullChar
Shell_NotifyIcon NIM_MODIFY, nid
End If
Case WM_RBUTTONUP
Case WM_RBUTTONDBLCLK
End Select
End Sub
К сожалению, я не помню, где же в интернете этот пример нашел. Если
кто-нибудь знает автора, пожалуйста,
напишите мне.
Как добавить/удалить иконку в SysTray? (4 853 байт)