在VB中,如何用一个菜单项调用一个帮助文件或打开一个网页
解决方案 »
- CopyMemory在IDE环境不会出错,编译成exe程序后运行后出错?
- 提取并保存 EXE 或 DLL 文件中包含的图标
- update,delete,insert into 出错!!!
- 打印回车有问题???
- dao3.51只能连ACCESS97而不能连ACCESS2000吗?
- 为什么CursorType是adOpenForwordOnly?
- 批量检索DOC文档 查找是否包含指定关键字
- Textbox中如何表示%
- 如何在一个子窗体中激活另外一个子窗体时,原来的子窗体大小不便?
- VB6打开一个带密码的ACCESS库,出错了,哪位好心人指导一下啊!在线等啊!
- vb 设定输入法(日文输入法中的全角英数字,半角英数字,全角かな等)
- 在.net(C# or vb.net)中如何取消一个窗体的关闭
'最简单的方式
Shell """C:\Program Files\Internet Explorer\iexplore.exe"" www.csdn.net", vbNormalFocus
Shell "hh.exe c:\windows\system32\a.chm", vbNormalFocus
End Sub
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
帮助:HH.EXE
网页:Shell