The Artima Developer Community
Sponsored Link

Legacy Java Answers Forum
April 2001

Advertisement

Advertisement

This page contains an archived post to the Java Answers Forum made prior to February 25, 2002. If you wish to participate in discussions, please visit the new Artima Forums.

Message:

systray

Posted by Adi on October 15, 2001 at 7:27 AM


hi geeta

This example shows you how to add an icon to the system tray, like many other utilities (ie a Virus Scanner).

First, add two Image Controls to your form, named imgOne, and imgTwo, and set their Picture properties to two different icons sized 16x16 (You can find some icons at %VBInstallPathCommonGraphics). Next, add a PictureBox called picHook. Finally, you need to add a menu item called mnuPopup, with two sub menu items called mnuPopupAbout and mnuPopupExit. Then, add the code below to the form.

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 Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

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 Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim T As NOTIFYICONDATA

Private Sub Form_Load()

'Setup initial Tray Icon
T.cbSize = Len(T)
T.hWnd = pichook.hWnd
T.uId = 1&
T.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
T.ucallbackMessage = WM_MOUSEMOVE
T.hIcon = imgOne.Picture
T.szTip = "Recent" & Chr$(0)
Shell_NotifyIcon NIM_ADD, T

'Hide this form
Me.Hide
End Sub


Private Sub Form_Unload(Cancel As Integer)
'Unload this form. Important: always end with "unload me".
T.cbSize = Len(T)
T.hWnd = pichook.hWnd
T.uId = 1&
Shell_NotifyIcon NIM_DELETE, T
End
End Sub

Private Sub mnuPopupAbout_Click()
MsgBox "Popup Example", , "About..."
End Sub

Private Sub mnuPopUpExit_Click()
Unload Me
End Sub

Private Sub pichook_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Static State As Boolean
Static Popped As Boolean
Static Msg As Long

Msg = X / Screen.TwipsPerPixelX
If Popped = False Then
'As we don't want any popups during the processing,
'turn off the MouseMove event by setting popped=true
Popped = True

'Se the general section on how to interpret Msg
Select Case Msg
Case WM_LBUTTONDBLCLK
mnuPopupAbout_Click

Case WM_LBUTTONDOWN
'In this case we have a twostate button, On or Off.
State = Not State
If State Then
'Set picture
T.hIcon = imgTwo.Picture
'Set tooltip
T.szTip = "Off" + Chr$(0)
Else
T.hIcon = imgOne.Picture
T.szTip = "On" + Chr$(0)
End If
Shell_NotifyIcon NIM_MODIFY, T

Case WM_LBUTTONUP

Case WM_RBUTTONDBLCLK

Case WM_RBUTTONDOWN

Case WM_RBUTTONUP
PopupMenu mnuPopup, 2, , , mnuPopupAbout

End Select
'OK to popup again
Popped = False
End If


> > how do i get my app in the systray, and how do i detect internet
> > Thanks





Replies:

Sponsored Links



Google
  Web Artima.com   
Copyright © 1996-2009 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us