How to Minimize/Send an App Icon to System Tray in Visual Basic 6
The following code snippet allows to manipulate the system tray by adding your apps icon when you minimize the form and restore when you double click on the app's icon on the system tray area.
This sub sends the icon to system tray.
When the minimize button is clicked it will hide the form and send icon to system tray.
When the app icon on the system tray is doubled click it will show the form and delete the icon from the system tray.
Option Explicit 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 Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2 Public Const WM_MOUSEMOVE = &H200 Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4 Public Const WM_LBUTTONDBLCLK = &H203 'Double-click Public Const WM_LBUTTONDOWN = &H201 'Button down Public Const WM_LBUTTONUP = &H202 'Button up Public Const WM_RBUTTONDBLCLK = &H206 'Double-click Public Const WM_RBUTTONDOWN = &H204 'Button down Public Const WM_RBUTTONUP = &H205 'Button up Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean 'Dimension a variable as the user-defined data type. Dim nid As NOTIFYICONDATA
This sub sends the icon to system tray.
Sub minToTray() '------------------------ '--- create tray icon --- '------------------------ nid.cbSize = Len(nid) nid.hWnd = Me.hWnd nid.uId = vbNull nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE nid.uCallBackMessage = WM_MOUSEMOVE nid.hIcon = Main.Icon 'the icon will be your Form1 project icon nid.szTip = TrayName 'tip text 'adds the icon to the taskbar area Shell_NotifyIcon NIM_ADD, nid End Sub 'This is Tip text when hovering on the system tray icon Function TrayName() as String TrayName = App.EXEName & " Ver." & App.Major & "." & App.Minor & vbCrLf & App.CompanyName & vbNullChar End Function
When the minimize button is clicked it will hide the form and send icon to system tray.
Private Sub imgMin_Click() 'Hides main form and shows mini mode Me.Hide minToTray 'send icon to system tray End Sub
When the app icon on the system tray is doubled click it will show the form and delete the icon from the system tray.
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 Me.Show Me.WindowState = vbNormal 'Deletes the tray icon when the form is shown Shell_NotifyIcon NIM_DELETE, nid ' del tray icon Case WM_RBUTTONDOWN 'Show popup menu PopupMenu mExit Case WM_RBUTTONUP Case WM_RBUTTONDBLCLK End Select End Sub
Thanks.... it works after a little modifications..
ReplyDelete