65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.90/5 (8投票s)

2006年2月15日

2分钟阅读

viewsIcon

52686

downloadIcon

1341

一个简单的类,用于在状态栏区域创建图标。

Sample Image - maximum width is 600 pixels

引言

    在我的文章《系统托盘图标》中,我介绍了一个简单的类,用于在状态栏区域创建图标。状态栏区域的图标是运行在计算机后台的进程的快捷方式,例如病毒防护程序或音量控制。这些进程没有自己的用户界面。通知图标提供了一种以编程方式实现此功能的方法。

类详细信息

公共方法

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_RBUTTONDBLCLK = &H206

Const WM_MBUTTONDBLCLK = &H209

 

 

当用户单击状态栏中的图标时发生。
Const WM_LBUTTONDOWN = &H201

Const WM_RBUTTONDOWN = &H204

Const WM_MBUTTONDOWN = &H207

 

 

当用户按下鼠标按钮时,指针位于任务栏的状态通知区域中的图标上时发生。
Const WM_MOUSEMOVE = &H200

 

 

 

当用户移动鼠标时,指针位于任务栏的状态通知区域中的图标上时发生。

 

Const WM_LBUTTONUP = &H202

Const WM_RBUTTONUP = &H205

Const WM_MBUTTONUP = &H208

 

当用户释放鼠标按钮时,指针位于任务栏的状态通知区域中的图标上时发生。

 

使用代码

关于如何使用文章或代码的简要说明。

'
'     ###         ###          ######
'    #     #   # #               #                   #   #
'     ###   # #  ###   #####     #   #####   ####     # #
'        #   #      #            #    ##  # #   ##     #
'    ####   #    ###             #    #      ###  #   #
'

使用的结构

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日)
    首次发布
© . All rights reserved.