'Download the full source+pictures+... At http://www.geocities.com/SiliconValley/Campus/3636/trayicon.zip
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 TypePrivate Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONUP = &H205Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim TrayI As NOTIFYICONDATA
Private Sub Form_Load()
    TrayI.cbSize = Len(TrayI)
    'Set the window's handle (this will be used to hook the specified window)
    TrayI.hWnd = pichook.hWnd
    'Application-defined identifier of the taskbar icon
    TrayI.uId = 1&
    'Set the flags
    TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    'Set the callback message
    TrayI.ucallbackMessage = WM_LBUTTONDOWN
    'Set the picture (must be an icon!)
    TrayI.hIcon = imgIcon(2).Picture
    'Set the tooltiptext
    TrayI.szTip = "Recent" & Chr$(0)
    'Create the icon
    Shell_NotifyIcon NIM_ADD, TrayI    Me.Hide
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'remove the icon
    TrayI.cbSize = Len(TrayI)
    TrayI.hWnd = pichook.hWnd
    TrayI.uId = 1&
    Shell_NotifyIcon NIM_DELETE, TrayI
    End
End Sub
Private Sub mnuPop_Click(Index As Integer)
    Select Case Index
        Case 0
            MsgBox "KPD-Team 1998" + Chr$(13) + "URL: http://www.allapi.net/" + Chr$(13) + "E-Mail: [email protected]", vbInformation + vbOKOnly
        Case 2
            Unload Me
    End Select
End Sub
Private Sub pichook_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Msg = X / Screen.TwipsPerPixelX
    If Msg = WM_LBUTTONDBLCLK Then
        'Left button double click
        mnuPop_Click 0
    ElseIf Msg = WM_RBUTTONUP Then
        'Right button click
        Me.PopupMenu mnuPopUp
    End If
End Sub
Private Sub Timer1_Timer()
    Static Tek As Integer
    'Animate the icon
    Me.Icon = imgIcon(Tek).Picture
    TrayI.hIcon = imgIcon(Tek).Picture
    Tek = Tek + 1
    If Tek = 3 Then Tek = 0
    Shell_NotifyIcon NIM_MODIFY, TrayI
End Sub

解决方案 »

  1.   

    【VB声明】
      Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long【别名】
      Shell_NotifyIconA【说明】
      我很痛苦的发现,在我那权威的资料里竟没有找到这个函数的任何说明(包括NOTIFYICONDATA结构的说明)。所以我只好把它们空着。在一些用到这个函数的源程序里,我还是知道了一些这个函数的用法,可惜不完整。如果你对这个函数比较了解,望替我把它补充完整,并为它分类。 【返回值】
      Long,??????? 【备注】
      ???????【参数表】
      dwMessage ------  Long,下述常数之一:
      NIM_ADD
      添加指定的图标
      NIM_DELETE
      删除指定的图标
      NIM_MODIFY
      修改指定的图标  lpData ---------  NOTIFYICONDATA,这个结构的内容因dwMessage参数而异
      

  2.   

    typedef struct _NOTIFYICONDATA { 
        DWORD cbSize; 
        HWND hWnd; 
        UINT uID; 
        UINT uFlags; 
        UINT uCallbackMessage; 
        HICON hIcon; 
        char szTip[64]; 
    } NOTIFYICONDATA, *PNOTIFYICONDATA; 
     Contains information that the system needs to process taskbar status area messages. cbSize 
    Size of this structure, in bytes. 
    hWnd 
    Handle to the window that will receive notification messages associated with an icon in the taskbar status area. 
    uID 
    Application-defined identifier of the taskbar icon. 
    uFlags 
    Array of flags that indicate which of the other members contain valid data. This member can be a combination of the following: NIF_ICON  The hIcon member is valid.  
    NIF_MESSAGE  The uCallbackMessage member is valid. 
    NIF_TIP  The szTip member is valid. uCallbackMessage 
    Application-defined message identifier. The system uses this identifier for notification messages that it sends to the window identified in hWnd. These notifications are sent when a mouse event occurs in the bounding rectangle of the icon. 
    hIcon 
    Handle to the icon to add, modify, or delete. 
    szTip 
    Tooltip text to display for the icon. 
      

  3.   

    Shell_NotifyIconA是Shell_NotifyIcon的别名Shell_NotifyIcon
    WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
        DWORD dwMessage, 
        PNOTIFYICONDATA pnid
    ); Sends a message to the system to add, modify, or delete an icon from the taskbar status area. Returns nonzero if successful, or zero otherwise. 
    dwMessage 
    Message value to send. This parameter can be one of these values: NIM_ADD  Adds an icon to the status area. 
    NIM_DELETE  Deletes an icon from the status area. 
    NIM_MODIFY  Modifies an icon in the status area.  pnid 
    Address of a NOTIFYICONDATA structure. The content of the structure depends on the value of dwMessage. 
      

  4.   

    MSDN里有呀,
    主要是用来做右下角任务栏里的小图标