PDA

Click to See Complete Forum and Search --> : changing system tray icons


jimdalby
Nov 26th, 1999, 02:16 AM
How can I change the Icon in the system tray?
Also, how can I make it flash?
Thanx

------------------
jimmy
ICQ:35813919
mail:jim@rdalby.f9.co.uk

Aaron Young
Nov 26th, 1999, 11:54 AM
Set the NOTIFYICON Type hIcon Property to the Image you want to Display in the Tray, then Call the Shell_NotifyIcon Function with the NIM_MODIFY Flag, eg.

On a Form, Add an Invisible Picturebox with an Icon loaded in it and a Timer Control..

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 Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Private Const NIF_ICON = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_TIP = &H4
Private Const NIM_ADD = &H0
Private Const NIM_DELETE = &H2
Private Const NIM_MODIFY = &H1
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONDOWN = &H204

Private tTrayIcon As NOTIFYICONDATA

Private Sub Form_Load()
'Create a Tray Icon
Picture1.Visible = False
With tTrayIcon
.hIcon = Icon
.hwnd = Picture1.hwnd
.szTip = "My Tray Icon" & Chr(0)
.uCallbackMessage = WM_MOUSEMOVE
.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
.uID = 1
.cbSize = Len(tTrayIcon)
End With
Shell_NotifyIcon NIM_ADD, tTrayIcon
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Form_Resize()
DoEvents
If WindowState = vbMinimized Then
Hide
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Remove the Tray Icon
Timer1.Enabled = False
Shell_NotifyIcon NIM_DELETE, tTrayIcon
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case ScaleX(X, vbTwips, vbPixels)
Case WM_RBUTTONDOWN
'Show Popup Menu
Case WM_LBUTTONDBLCLK
'Show the Form
WindowState = vbNormal
Show
End Select
End Sub

Private Sub Timer1_Timer()
Static bFlash As Boolean
bFlash = Not bFlash
If bFlash Then
tTrayIcon.hIcon = Picture1
Else
tTrayIcon.hIcon = Icon
End If
tTrayIcon.cbSize = Len(tTrayIcon)
Shell_NotifyIcon NIM_MODIFY, tTrayIcon
End Sub


------------------
Aaron Young
Analyst Programmer
aarony@redwingsoftware.com
adyoung@win.bright.net

jimdalby
Nov 26th, 1999, 07:53 PM
Thanx Very much

------------------
jimmy
ICQ:35813919
mail:jim@rdalby.f9.co.uk