不用谢,结帐吧
下面是一个例子  http://pcwak.8u8.com/11.zip

解决方案 »

  1.   

    在一个公共模块中加入以下代码:Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) 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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic 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 TypePublic Type MSG
        hwnd As Long
        message As Long
        wParam As Long
        lParam As Long
        time As Long
        pt As POINTAPI
    End TypePublic Const NIF_ICON = &H2
    Public Const NIF_MESSAGE = &H1
    Public Const NIF_TIP = &H4
    Public Const NIM_ADD = &H0
    Public Const NIM_DELETE = &H2
    Public Const NIM_MODIFY = &H1
    Public Const WM_USER = &H400
    Public Const WM_RBUTTONDOWN = &H204
    Public Const WM_LBUTTONUP = &H202
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_RBUTTONUP = &H205Public Function WinProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        On Error Resume Next
        If hw = dlgMain.hwnd And uMsg = WM_USER + 100 Then
            Select Case lParam
                Case WM_RBUTTONUP, WM_LBUTTONUP
                    dlgMain.Show           '此处可以为任何你想添加的代码
            End Select
        Else
            WinProc = CallWindowProc(g_lngOldProc, hw, uMsg, wParam, lParam)
        End If
    End FunctionPublic Function Hook()
        g_lngOldProc = SetWindowLong(dlgMain.hwnd, GWL_WNDPROC, AddressOf WinProc)
    End FunctionPublic Function UnHook()
        SetWindowLong dlgMain.hwnd, GWL_WNDPROC, g_lngOldProc
    End Function在窗体中(这里为dlgMain)加入以下代码:Private nimShellTrayIcon As NOTIFYICONDATAPrivate Sub Form_Load()    Call Hook    With nimShellTrayIcon
            .cbSize = Len(nimShellTrayIcon)
            .hIcon = Me.Icon
            .hwnd = Me.hwnd
            .szTip = Me.Caption & vbNullChar
            .uCallbackMessage = WM_USER + 100
            .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
            .uID = 1
        End With
        
        Call Shell_NotifyIcon(NIM_ADD, nimShellTrayIcon)End SubPrivate Sub Form_Unload(Cancel As Integer)    Call UnhookEnd Sub就行了