9
Ноябрь
2008
Как поместить иконку в системный трей?
Как поместить иконку в системный трей?
На форме должны находиться две кнопки.
Option Explicit
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const NIM_MODIFY = &H1
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_TIP = &H4
Private Const NIF_ICON = &H2
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
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
Private tray As NOTIFYICONDATA
Private Sub Command1_Click()
Shell_NotifyIcon NIM_ADD, tray
End Sub
Private Sub Command2_Click()
Shell_NotifyIcon NIM_DELETE, tray
End Sub
Private Sub Form_Load()
Command1.Caption = "Добавить"
Command2.Caption = "Удалить"
tray.cbSize = Len(tray)
tray.hIcon = Me.Icon
tray.hwnd = Me.hwnd
tray.szTip = "Всплывающая подсказка" & Chr(0)
tray.uCallbackMessage = WM_MOUSEMOVE
tray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
tray.uID = 0
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim msg As Long
msg = X / Screen.TwipsPerPixelX
Select Case msg
Case WM_LBUTTONDBLCLK
Me.Print "Двойной клик левой кнопкой"
Case WM_LBUTTONDOWN
Me.Print "Левая кнопка мыши нажата"
Case WM_LBUTTONUP
Me.Print "Левая кнопка мыши отжата"
Case WM_RBUTTONDBLCLK
Me.Print "Двойной клик правой кнопкой"
Case WM_RBUTTONDOWN
Me.Print "Правая кнопка мыши нажата"
Case WM_RBUTTONUP
Me.Print "Правая кнопка мыши отжата"
End Select
End Sub