请教一下如何制作托盘图标上的右键菜单?

解决方案 »

  1.   

    我的网站上有此问题的源码:网站:http://j2soft.008.net/VB资料->查询“托盘”即可。
      

  2.   

    要决在于:
    对Form添加菜单。
    在加载的时候,只Load这个Form,而不Show。
    在Form的MouseDown或Mousemove事件写下弹出菜单。eg:
    'moudel1
    Option ExplicitPublic Const MAX_TOOLTIP As Integer = 64
    Public 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 WM_MOUSEMOVE = &H200
    Public Const WM_LBUTTONDOWN = &H201
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_LBUTTONDBLCLK = &H203
    Public Const WM_RBUTTONDOWN = &H204
    Public Const WM_RBUTTONUP = &H205
    Public Const WM_RBUTTONDBLCLK = &H206Public Const SW_RESTORE = 9
    Public Const SW_HIDE = 0Public nfIconData As NOTIFYICONDATA
    Public Type NOTIFYICONDATA
        cbSize           As Long
        hwnd             As Long
        uID              As Long
        uFlags           As Long
        uCallbackMessage As Long
        hIcon            As Long
        szTip            As String * MAX_TOOLTIP
    End TypePublic Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As LongSub main()
        Load frmMenu
    End Sub'窗体的事件,假设窗体上已经有一个Menu:mnuMain
    Private Sub Form_Load()
    '以下把程序放入System Tray====================================System Tray Begin
    With nfIconData
        .hwnd = Me.hwnd
        .uID = Me.Icon
        .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
        .uCallbackMessage = WM_MOUSEMOVE
        .hIcon = Me.Icon.Handle
        '定义鼠标移动到托盘上时显示的Tip
        .szTip = App.Title + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar
        .cbSize = Len(nfIconData)
    End With
    Call Shell_NotifyIcon(NIM_ADD, nfIconData) '=============================================================System Tray End
    Me.Hide
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        ' 单击鼠标右建弹出菜单
        If Button = vbRightButton Then
            PopupMenu mnuMain
        End If
    End SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = vbRightButton Then
            PopupMenu mnuMain
        End If
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        ' 释放资源, 卸载窗体
        Dim frm As Form
        For Each frm In Forms
            Unload frm
        Next
        
        Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
    End Sub
      

  3.   

    可参考:托盘程序详解http://www.yesky.com/20011024/202037.shtml
    或:http://www.fzx.name/article/63.htm