先要定义一个popmenu,然后再调用就行了!

解决方案 »

  1.   

    我对vb不熟啊,能不能具体点啊,
    还有啊,我已用createpopupmenu,appmenu了啊
      

  2.   

    加入图标时,用.uCallbackMessage = WM_MOUSEMOVE,然后:
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Select Case CLng(X / Screen.TwipsPerPixelX)
            Case WM_LBUTTONDBLCLK
            Case WM_LBUTTONDOWN
            Case WM_LBUTTONUP
            Case WM_RBUTTONDBLCLK
            Case WM_RBUTTONDOWN
            Case WM_RBUTTONUP
        End Select
    End Sub
      

  3.   

    thanks
    还有那个键盘钩子呢?
      

  4.   

    还是不行啊,帮我看一下:
    Private Sub Command1_Click()
    Dim nid As NOTIFYICONDATA With nid
            .cbSize = Len(nid)
            .hIcon = Me.Icon
            .hwnd = Me.hwnd
            .szTip = nid.szTip & vbNullChar
            .uCallbackMessage = WM_LBUTTONDOWN
            .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
            .uID = 1&
     End With
    Shell_NotifyIcon NIM_ADD, nid
    hMenus = CreateMenu()
    AppendMenu hMenus, MF_STRING, 1000, "Restore"
    AppendMenu hMenus, MF_SEPARATOR, 0&, 0&
    AppendMenu hMenus, MF_STRING, 1010, "Exit"
    gHW = frm.hwnd
        Set appForm = frm
        lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, AddressOf WindowProc)
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then
    TrackPopupMenu hMenus, TPM_NONOTIFY Or TPM_RETURNCMD, X, Y, 0&, Form1.hwnd, 0&
    End If
    Select Case CLng(X / Screen.TwipsPerPixelX)
      '      Case WM_LBUTTONDBLCLK
            
            Case WM_LBUTTONDOWN
            TrackPopupMenu hMenus, TPM_NONOTIFY Or TPM_RETURNCMD, X, Y, 0&, Form1.hwnd, 0&
       '     Case WM_LBUTTONUP
        '    Case WM_RBUTTONDBLCLK
         '   Case WM_RBUTTONDOWN
          '  Case WM_RBUTTONUP
        End SelectEnd Sub
      

  5.   

    先在窗口上加一个picture1,并给他加一个图标,就是在任务兰上要显示的那个
    然后打开代码窗口,把下面的代码复制进去。
    Option ExplicitPrivate 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 WM_MOUSEMOVE = &H200
    Private Const NIF_MESSAGE = &H1
    Private Const NIF_ICON = &H2
    Private Const NIF_TIP = &H4Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
    Dim t As NOTIFYICONDATA
      

  6.   

    在form_load()中加
    Private Sub Form_Load()
        
        t.cbSize = Len(t)
        t.hWnd = Picture1.hWnd
        t.uId = 1&
        t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
        t.ucallbackMessage = WM_MOUSEMOVE
        t.hIcon = Picture1.Picture
        t.szTip = "飘洋[email protected]" & Chr$(0)
        Shell_NotifyIcon NIM_ADD, t
           Me.Hide
        App.TaskVisible = False
    End Sub
      

  7.   

    在form_Queryunload中
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
         t.cbSize = Len(t)
        t.hWnd = Picture1.hWnd
        t.uId = 1&
        Shell_NotifyIcon NIM_DELETE, t
    End Sub
      

  8.   

    Private Sub Menu_Click(Index As Integer)
        Unload Me
    End Sub
    Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      If Hex(X) = "1E3C" Then
            Me.PopupMenu xx
      End If
    End Sub
      

  9.   

    我要做到的是用createmenu,appmenu做出的菜单弹出啊
      

  10.   

    Option ExplicitPrivate Declare Function CreateMenu Lib "user32" () As Long
    Dim hMenus As Long
    Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
    Const MF_STRING = &H0&
    Const MF_SEPARATOR = &H800&
    Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Any) As Long
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
    Const TPM_RIGHTBUTTON = &H2&
    Private Const NIM_ADD = &H0
    Private Const NIM_MODIFY = &H1
    Private Const NIM_DELETE = &H2
    Private Const WM_MOUSEMOVE = &H200
    Private Const NIF_MESSAGE = &H1
    Private Const NIF_ICON = &H2
    Private Const NIF_TIP = &H4
    Dim nid As NOTIFYICONDATA
    Private Sub Command1_Click()
    'Dim nid As NOTIFYICONDATA With nid
            .cbSize = Len(nid)
        
            .hIcon = Me.Icon
            .hwnd = Me.hwnd
            .szTip = nid.szTip & vbNullChar
            .uCallbackMessage = WM_MOUSEMOVE
            .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
            .uID = 1&
     End With
     App.TaskVisible = False
    Shell_NotifyIcon NIM_ADD, nid
    hMenus = CreateMenu()
    AppendMenu hMenus, MF_STRING, 1000, "Restore"
    AppendMenu hMenus, MF_SEPARATOR, 0&, 0&
    AppendMenu hMenus, MF_STRING, 1010, "Exit"
    Me.Hide
    End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
            Select Case CLng(x / Screen.TwipsPerPixelX)
            Case WM_LBUTTONDOWN
            TrackPopupMenu hMenus, TPM_NONOTIFY Or TPM_RETURNCMD, x, y, 0&,         Form1.hwnd, 0&
            End SelectEnd Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        nid.cbSize = Len(t)
        nid.hwnd = Picture1.hwnd
        nid.uID = 1&
        Shell_NotifyIcon NIM_DELETE, nid
    End Sub这是我的代码帮帮忙看看哪里出错
      

  11.   

    ‘form_mouseDwon事件里面的 WM_LBUTTONDOWN常数没有定义。 ’’还有TrackPopupMenu hMenus, TPM_NONOTIFY Or TPM_RETURNCMD, x, y, 0&,        Form1.hwnd, 0&里的TPM_NONOTIFY Or TPM_RETURNCMD这两个,
     
    提议:
      鼠标事件不该放在Form_MouseDown里面,我觉得应该是
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
               
      If Hex(X) = "1E3C" Then
             TrackPopupMenu hMenus, TPM_NONOTIFY Or TPM_RETURNCMD, X, Y,_
                            0&, Form1.hwnd, 0&
      End IfEnd Sub