说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中怎么调用CHM的格式帮助文件.

编辑:说三道四文库 发布时间:2018-06-19 08:20
HTML文档下载 WORD文档下载 PDF文档下载
在VB中怎么调用CHM的格式帮助文件.
HWND HtmlHelp(HWND hwndCaller, 
LPCSTR pszFile, UINT uCommand, DWORD 
dwData);

---- 按照说明,参数hwndCaller是窗口的句柄,pszFile是HTML帮助文件的路径和名称, uCommand表明执行的操作,dwData是uCommand参数所必需的值。它包含在哪个文件中,如何将它转为VB的格式呢?仔细对帮助文件进行研究,帮助文件中提到:HTMLHELP函数被包含在hhctrl.ocx文件中。于是就得到了HTMLHELP函数在VB中的声明: 
Declare Function htmlhelp Lib
 "hhctrl.ocx" Alias "HtmlHelpA"
 (ByVal hwndCaller As Long, 
ByVal pszFile As String, ByVal 
uCommand As Long, ByVal dwData As Long) As Long

如果我要根据窗体上的内容来,直接跳到帮助文件的某一页,怎么办?
方法一(通过调用帮助的api 推荐~)
Private Declare Function HtmlHelpA Lib "hhctrl.ocx" (ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long) As Long

Private Sub Command1_Click()
    HtmlHelpA Me.hWnd, "C:\WINDOWS\HELP\CALC.CHM", 0, 0 '注意路径
End Sub

方法二(通过运行chm文件)
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

ShellExecute 0, "open", "C:\WINDOWS\HELP\CALC.CHM", 0, 0, 1
最简单的方法,不久前刚试过
private sub command1_click()
  shell "hh.exe 文件名.chm"
end sub
最简单的方法,不久前刚试过
private sub command1_click()
  shell "hh.exe 文件名.chm"
end sub

hh.exe 在c:\windows里,可以copy到你程序所在的目录里
不用copy hh.exe了,只要这样:
声明API ShellExecute:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

在要执行CHM的地方写:
Dim ret
ret=ShellExecute(Me.hWnd,"Open",App.Path & "\Example.chm",vbNullString,vbNullString,vbNull)
就可以了。
最简单的方法,不久前刚试过
private sub command1_click()
  shell "文件名.chm"
end sub
不行呀,总是第一页,如果我要一点击就进入第10页,我做法为:
Private Sub Command1_Click()
    HtmlHelpA Me.hWnd, "C:\WINDOWS\HELP\CALC.CHM", 1, 10 
End Sub
可不能实现?怎办?
试试看(一)
Private Sub Command1_Click()
    HtmlHelpA Me.hWnd, "C:\WINDOWS\HELP\CALC.CHM::xxx.htm", 1, 10 
End Sub
试试看(二)
Private Sub Command1_Click()
    ShellExecute 0, "open", "C:\WINDOWS\HELP\CALC.CHM::xxx.htm", 0, 0, 1
End Sub

注:xxx.htm 是你想调的网页
Private Declare Function htmlhelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long

'显示指定的帮助文件(STRHELPFILENAME[CHM类型])中的指定网页(STRHTMLFILENAME),成功返回帮助窗口句柄,错误返回0
Public Function fun_ShowHelp(ByVal hwnd As Long, ByVal strHelpFileName As String, Optional ByVal strHtmlFileName As String) As Long
    Dim lRet As Long
    If IsMissing(strHtmlFileName) Then
        lRet = htmlhelp(hwnd, strHelpFileName, 0, 0)
    Else
        lRet = htmlhelp(hwnd, strHelpFileName & "::/" & strHtmlFileName, 0, 0)
    End If
    fun_ShowHelp = lRet
End Function
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘