通知图标 - 系统托盘图标探索






1.90/5 (8投票s)
2006年2月15日
2分钟阅读

52686

1341
一个简单的类,用于在状态栏区域创建图标。
引言
在我的文章《系统托盘图标》中,我介绍了一个简单的类,用于在状态栏区域创建图标。状态栏区域的图标是运行在计算机后台的进程的快捷方式,例如病毒防护程序或音量控制。这些进程没有自己的用户界面。通知图标提供了一种以编程方式实现此功能的方法。
类详细信息
公共方法
ShowIcon (ByRef SysTrayForm As Form) |
设置当前图标。
|
RemoveIcon (SysTrayForm As Form) |
移除当前图标。
|
ChangeIcon (SysTrayForm As Form, picNewIcon As PictureBox)
|
设置鼠标悬停在状态栏图标上时显示的工具提示文本。 |
(RestoreIcon (SysTrayForm As Form) |
恢复默认图标。
|
ChangeToolTip (SysTrayForm As Form, strNewTip As String) |
设置鼠标悬停在状态栏图标上时显示的工具提示文本。
|
公共事件
Const WM_LBUTTONDBLCLK = &H203
|
当用户单击状态栏中的图标时发生。 |
Const WM_LBUTTONDOWN = &H201
|
当用户按下鼠标按钮时,指针位于任务栏的状态通知区域中的图标上时发生。 |
Const WM_MOUSEMOVE = &H200
|
当用户移动鼠标时,指针位于任务栏的状态通知区域中的图标上时发生。
|
Const WM_LBUTTONUP = &H202
|
当用户释放鼠标按钮时,指针位于任务栏的状态通知区域中的图标上时发生。 |
使用代码
关于如何使用文章或代码的简要说明。
' ' ### ### ###### ' # # # # # # # ' ### # # ### ##### # ##### #### # # ' # # # # ## # # ## # ' #### # ### # # ### # # '
使用的结构
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
使用的 API
Private Declare Function Shell_NotifyIcon Lib "shell32" _ Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, _ lpData As NOTIFYICONDATA) As Long
私有属性
Private Property Let bRunningInTray(ByVal vData As Boolean) RunningInTray = vData End Property Property Get bRunningInTray() As Boolean bRunningInTray = RunningInTray End Property
函数详情
Public Sub ShowIcon(ByRef SysTrayForm As Form) With nic .cbSize = Len(nic) .Hwnd = SysTrayForm.Hwnd .uId = vbNull .uFlags = 7 .ucallbackMessage = 512 'On Mouse Move .hIcon = SysTrayForm.Icon .szTip = SysTrayForm.Caption + Chr(0) End With Shell_NotifyIcon 0, nic RunningInTray = True End Sub Public Sub RemoveIcon(SysTrayForm As Form) With nic .cbSize = Len(nic) .Hwnd = SysTrayForm.Hwnd .uId = vbNull .uFlags = 7 .ucallbackMessage = vbNull .hIcon = SysTrayForm.Icon .szTip = Chr(0) End With Shell_NotifyIcon 2, nic If SysTrayForm.Visible = False Then SysTrayForm.Show 'Incase user can't see form RunningInTray = False End Sub Public Sub ChangeIcon(SysTrayForm As Form, picNewIcon As PictureBox) If RunningInTray = True Then 'If running in the tray With nic .cbSize = Len(nic) .Hwnd = SysTrayForm.Hwnd .hIcon = picNewIcon.Picture End With Shell_NotifyIcon 1, nic End If End Sub Public Sub RestoreIcon(SysTrayForm As Form) If RunningInTray = True Then 'If running in the tray With nic .cbSize = Len(nic) .Hwnd = SysTrayForm.Hwnd .hIcon = SysTrayForm.Icon End With Shell_NotifyIcon 1, nic End If End Sub Public Sub ChangeToolTip(SysTrayForm As Form, strNewTip As String) If RunningInTray = True Then 'If running in the tray With nic .cbSize = Len(nic) .Hwnd = SysTrayForm.Hwnd .szTip = strNewTip & Chr(0) End With Shell_NotifyIcon 1, nic End If End Sub
历史
- v1.1 (2006年2月16日)
首次发布