Я вот недавно начал изучать вб, и тоже столкнулся с этой проблеммой. То что на этом сайте есть на эту тему, никоим образом не помогает, после долгих поисков в интеренете, и чтения хелпа, итд, я написал нужное мне, и работает вот примерчик, он должен разьяснить что к чему. 1. создай форму 2. Введи в прожект новый модуль, в нем писать следующее: Option Explicit Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2 Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 Public Const WM_MOUSEMOVE = &H200 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 HWND_TOPMOST = -1 Public nid As NOTIFYICONDATA Public 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 3. На форме открой едитор менюшек, и там сделай меню с caption Systray и name systray и два подменю, первый с caption: выход и name: mnuexit и второй с caption восстановить и name restore. 4. открой код и запиши: Private Sub Form_Load() Me.Show End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) Dim Sys As Long Sys = x / Screen.TwipsPerPixelX Select Case Sys Case WM_LBUTTONDBLCLK: WindowState = vbNormal Me.Show Case WM_RBUTTONDOWN: Me.PopupMenu mnuSystray End Select End Sub Private Sub Form_Resize() If WindowState = vbMinimized Then Me.Hide Me.Refresh With nid .cbSize = Len(nid) .hwnd = Me.hwnd .uId = vbNull .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE .uCallBackMessage = WM_MOUSEMOVE .hIcon = Me.Icon .szTip = Me.Caption & vbNullChar End With Shell_NotifyIcon NIM_ADD, nid Else Shell_NotifyIcon NIM_DELETE, nid End If End Sub Private Sub Form_Unload(Cancel As Integer) Shell_NotifyIcon NIM_DELETE, nid End End Sub Private Sub mnuexit_Click() Unload Me End Sub Private Sub mnuRestore_Click() WindowState = vbNormal Me.Show End Sub 5. Запусти прогу Теперь когда нажимаешь minimise она сворачивается в систрей, и там если кликнуть левой кнопкой мыши два раза, прога восстановится, если кликнуть правой один раз то всплывет менюшка с двумя опшнами. Удачи
Ответить
|