我的老天,我又要 COPY/PASTE 了!
这个问题已经有人问过多次,可能搜索起来太困难,把我的代码关键部分贴出来吧:Windows 相关 API 声明:Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long自定义消息常量和全局变量:
Public g_lPrevProc As LongPublic Const WM_SYSTRAYMESSAGE = WM_USER + 1975FORM 初始化:Private Sub Form_Load()
    g_lPrevProc = SetWindowLong(frmMain.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End SubWindowProc:Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
   if uMsg = WM_SYSTRAYMESSAGE Then
        If lParam = WM_LBUTTONUP Then
            DeleteSysTrayIcon hwnd
            frmMain.WindowState = vbNormal
            frmMain.Show
        ElseIf lParam = WM_RBUTTONUP Then
            SetForegroundWindow frmMain.hwnd
            frmMain.PopupMenu frmMain.mnuPopup
        ElseIf lParam = WM_MOUSEMOVE Then
            If Not g_bMouseMove Then
                g_bMouseMove = True
                g_strTipText = Format$(Now, "mm/dd/yyyy hh:nn:ss")
                ModifySysTrayTip frmMain.hwnd, g_strTipText
            End If
        End If
    Else
        WindowProc = CallWindowProc(g_lPrevProc, hwnd, uMsg, wParam, lParam)
    End If
End FunctionSYSTRAY 函数:Public Sub ModifySysTrayTip(hwnd As Long, strTipText As String)
    Dim stNotify As NOTIFYICONDATA
    
    With stNotify
        .cbSize = Len(stNotify)
        .hwnd = hwnd
        .szTip = strTipText & vbNullChar
        .uFlags = NIF_TIP
    End With
    Call Shell_NotifyIcon(NIM_MODIFY, stNotify)
End SubPublic Sub AddSysTrayIcon(hwnd As Long, hIcon As Long, strTipText As String)
    Dim stNotify As NOTIFYICONDATA
    
    With stNotify
        .cbSize = Len(stNotify)
        .hIcon = hIcon
        .hwnd = hwnd
        .szTip = strTipText & vbNullChar
        .uCallbackMessage = WM_SYSTRAYMESSAGE
        .uFlags = NIF_ICON + NIF_TIP + NIF_MESSAGE
    End With
    Call Shell_NotifyIcon(NIM_ADD, stNotify)
End SubPublic Sub DeleteSysTrayIcon(hwnd As Long)
    Dim stNotify As NOTIFYICONDATA
    
    With stNotify
        .cbSize = Len(stNotify)
        .hwnd = hwnd
    End With
    Call Shell_NotifyIcon(NIM_DELETE, stNotify)
End Sub仅供参考。

解决方案 »

  1.   

    VB5.0的光盘中有一UNSUPPORT(大约是叫这个)有个systray例子,打开此工程,然后选择文件-生成*.ocx,这样你就有一个系统托盘控件了,用起来很简单的!
      

  2.   

    to edyang:
    哈哈,你一copy&paste,就又可以有200分啦:)
    可是我,就连一个小小的例子都得凭记忆还得用手一个一个字打出来,还不能试,真是累呀 @@
      

  3.   

    上网找SYSTRAY控件吧,支持鼠标事件及光标闪烁(ICQ)
      

  4.   

    api api api 什么,都要api呵呵 你分也好得哈