在VB中,如何用一个菜单项调用一个帮助文件或打开一个网页

解决方案 »

  1.   

    Private Sub Command1_Click()
        '最简单的方式
        Shell """C:\Program Files\Internet Explorer\iexplore.exe"" www.csdn.net", vbNormalFocus
        Shell "hh.exe c:\windows\system32\a.chm", vbNormalFocus
    End Sub
      

  2.   

    '自制菜单'******************************* 窗体 Form1 代码Option Explicit
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    '**************************************** 自制菜单用到的API
    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
    Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long
    Private Declare Function CreatePopupMenu Lib "user32" () As Long
    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, ByVal lprc As Any) As Long
    '*****************************************************
    Const MF_CHECKED = &H8&
    Const MF_APPEND = &H100&
    Const TPM_LEFTALIGN = &H0&
    Const MF_DISABLED = &H2&
    Const MF_GRAYED = &H1&
    Const MF_SEPARATOR = &H800&
    Const MF_STRING = &H0&
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
    Dim mSubMenu&, i&
    Private Sub Form_Load()
       Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
       mSubMenu = CreatePopupMenu()
       AppendMenu mSubMenu, MF_STRING, 100, "帮 助(&H)"
       AppendMenu mSubMenu, MF_SEPARATOR, ByVal 0&, ByVal 0&
       AppendMenu mSubMenu, MF_STRING, 101, "上 网(&W)"
       AppendMenu mSubMenu, MF_SEPARATOR, ByVal 0&, ByVal 0&
       AppendMenu mSubMenu, MF_STRING, 102, "退 出(&X)"
       OldProc = SetWindowLong(Me.Hwnd, GWL_WNDPROC, AddressOf WndProc)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       DestroyMenu mSubMenu
       SetWindowLong Me.Hwnd, GWL_WNDPROC, OldProc
       'End
    End SubPrivate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Dim Pt As POINTAPI
       GetCursorPos Pt
       If Button = 2 Then TrackPopupMenu mSubMenu, TPM_LEFTALIGN, Pt.X, Pt.Y, 0, Me.Hwnd, ByVal 0&
    End Sub
    '**************************** Module1.bas 的代码Option Explicit
    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 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 Const BN_CLICKED = 0
    Public Const WM_COMMAND = &H111
    Public Const GWL_WNDPROC = (-4)
    Public OldProc&
    Public Function WndProc(ByVal Hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
       If Msg = WM_COMMAND Then
          If (wParam And &HFFFF0000) = BN_CLICKED Then
             Select Case wParam And &HFFFF
                Case 100 '帮 助
                   Call Shell("explorer " & "c:\api32.chm", vbNormalFocus)
                Case 101 '上 网
                   Call Shell("explorer " & "http://image1.daqi.com/pic_search/original/12881/dd13c068e4b7cefbc77a3949031f07e3.jpg", vbNormalFocus)
                Case 102 '退 出
                   Unload Drawing
             End Select
          End If
       Else
          WndProc = CallWindowProc(OldProc, Hwnd, Msg, wParam, lParam)
       End If
    End Function
      

  3.   

    vb 6.0 中
    帮助:HH.EXE
    网页:Shell