Use the Shell_NotifyIcon api function to place your program in the system tray.
Code:Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long 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_LBUTTONUP = &H202 Public Const WM_RBUTTONUP = &H205 Public Const WM_MOUSEMOVE = &H200 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 VBGTray As NOTIFYICONDATA 'Form Declarations: Private Sub GoSystemTray() VBGTray.cbSize = Len(VBGTray) VBGTray.hwnd = Me.hwnd VBGTray.uId = vbNull VBGTray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE VBGTray.ucallbackMessage = WM_MOUSEMOVE VBGTray.hIcon = Me.Icon 'tool tip text VBGTray.szTip = Me.Caption & vbNullChar Call Shell_NotifyIcon(NIM_ADD, VBGTray) App.TaskVisible = False 'remove application from taskbar Me.Hide End Sub 'Form Code: Private Sub Form_MouseMove(button As Integer, Shift As Integer, X As Single, Y As Single) Static lngMsg As Long Static blnFlag As Boolean Dim result As Long lngMsg = X / Screen.TwipsPerPixelX If blnFlag = False Then blnFlag = True Select Case lngMsg 'right-click Case WM_RBUTTONUP result = SetForegroundWindow(Me.hwnd) PopupMenu MyPopUpMenu Case WM_LBUTTONUP result = SetForegroundWindow(Me.hwnd) PopupMenu MyPopUpMenu End Select blnFlag = False End If End Sub Private Sub Form_Resize() If Me.WindowState = 1 Then Call GoSystemTray End If End Sub Private Sub Form_Unload(Cancel As Integer) VBGTray.cbSize = Len(VBGTray) VBGTray.hwnd = Me.hwnd VBGTray.uId = vbNull Call Shell_NotifyIcon(NIM_DELETE, VBGTray) Unload Me Set Form1 = Nothing End End Sub




Reply With Quote