仅仅在得不到用户的焦点,只能算是后台程序,如叫win2000或winNT的服务程序有点不妥,我给大侠指条明路在163社区北京站的basic专区的精华区里面有详解,吾没能找出来给你实有歉意
                                       
               

解决方案 »

  1.   

    1.将下面代码加入到一个module里。
    Option ExplicitPublic OldWindowProc As Long
    Public TheForm As Form
    Public TheMenu As MenuDeclare 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
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
    Public Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As LongPublic Const WM_USER = &H400
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_MBUTTONUP = &H208
    Public Const WM_RBUTTONUP = &H205
    Public Const WM_RASEVENT = &HCCCD
    Public Const TRAY_CALLBACK = (WM_USER + 1001&)
    Public Const GWL_WNDPROC = (-4)
    Public Const GWL_USERDATA = (-21)
    Public Const NIF_ICON = &H2
    Public Const NIF_TIP = &H4
    Public Const NIM_ADD = &H0
    Public Const NIF_MESSAGE = &H1
    Public Const NIM_MODIFY = &H1
    Public Const NIM_DELETE = &H2Public 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 TheData As NOTIFYICONDATA' *********************************************
    ' The replacement window proc.
    ' *********************************************
    Public Function NewWindowProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If Msg = TRAY_CALLBACK Then
            ' The user clicked on the tray icon.
            ' Look for click events.
            If lParam = WM_LBUTTONUP Then
                ' On left click, show the menu.
                SetForegroundWindow TheForm.hWnd
                TheForm.PopupMenu TheMenu
                Exit Function
            End If
        End If
        ' Send other messages to the original
        ' window proc.
        NewWindowProc = CallWindowProc( _
            OldWindowProc, hWnd, Msg, _
            wParam, lParam)
    End Function
    ' *********************************************
    ' Add the form's icon to the tray.
    ' *********************************************
    Public Sub AddToTray(frm As Form, mnu As Menu)
        ' ShowInTaskbar must be set to False at
        ' design time because it is read-only at
        ' run time.
        
        ' Save the form and menu for later use.
        Set TheForm = frm
        Set TheMenu = mnu
        ' Install the new WindowProc.
        OldWindowProc = SetWindowLong(frm.hWnd, _
            GWL_WNDPROC, AddressOf NewWindowProc)
        
        ' Install the form's icon in the tray.
        With TheData
            .uID = 0
            .hWnd = frm.hWnd
            .cbSize = Len(TheData)
            .hIcon = frm.Icon.Handle
            .uFlags = NIF_ICON
            .uCallbackMessage = TRAY_CALLBACK
            .uFlags = .uFlags Or NIF_MESSAGE
            .cbSize = Len(TheData)
        End With
        Shell_NotifyIcon NIM_ADD, TheData
    End Sub
    ' *********************************************
    ' Remove the icon from the system tray.
    ' *********************************************
    Public Sub RemoveFromTray()
        ' Remove the icon from the tray.
        With TheData
            .uFlags = 0
        End With
        Shell_NotifyIcon NIM_DELETE, TheData
        
        ' Restore the original window proc.
        SetWindowLong TheForm.hWnd, GWL_WNDPROC, _
            OldWindowProc
    End Sub
    ' *********************************************
    ' Set a new tray tip.
    ' *********************************************
    Public Sub SetTrayTip(tip As String)
        With TheData
            .szTip = tip & vbNullChar
            .uFlags = NIF_TIP
        End With
        Shell_NotifyIcon NIM_MODIFY, TheData
    End Sub
    ' *********************************************
    ' Set a new tray icon.
    ' *********************************************
    Public Sub SetTrayIcon(pic As Picture)
        ' Do nothing if the picture is not an icon.
        If pic.Type <> vbPicTypeIcon Then Exit Sub    ' Update the tray icon.
        With TheData
            .hIcon = pic.Handle
            .uFlags = NIF_ICON
        End With
        Shell_NotifyIcon NIM_MODIFY, TheData
    End Sub2.然后在Form_Load事件中加入:
    'Add form icon to system tray & set tip
        AddToTray Me, mnuSystem
        SetTrayTip Me.Caption在Form_Unload事件中:
    'When unload form ,remove icon from tray
        RemoveFromTray这个我在win2000和win98中都试过的,可以用。
      

  2.   

    告诉我你的Email,我把我的示例程序给你,不过你要给我加分呀
      

  3.   

    herony(阿崧),给我一份好吗,谢谢!!
    [email protected]