Access调用CHM格式的帮助文件(绑定到ACCESS中)

2002-06-22 15:58:00
田野-Office交流网
原创
1900
是否可以把CHM格式的帮助文件绑定到ACCESS中,比如,单击一按钮,或者菜单,就打开帮助文件.请指教!

zhuyiwen
罗斯文中用的 .HLP 帮助文件,开发版代码库中有调用 .CHM 的完整代码。

tmtony
现抄现卖啦
Function ShowHelpAPI() As Boolean
    
    ' This procedure is used by the Show Me button on various Developer
    ' Solutions toolbars. It uses the WinHelp API function so that the
    ' Show Me Help button will provide context-sensitive Help regardless
    ' of the current state of the object. Make sure that the Help file is
    ' in the same directory as the Developer Solutions database.
    
    Dim lnghWnd As Long, strHelpFile As String, lngContext As Long
    Dim lngRetVal As Long, obj As Object
    
    On Error Resume Next
    Const conHelpContext = &H1
    Set obj = Screen.ActiveForm
    
    If Err = 2475 Then
        ' Active object is not a form.
        ' Reset Err and test for Report object.
        Err = 0
        Set obj = Screen.ActiveReport
            If Err = 2476 Then
                ' Current object is not a form or a report.
                MsgBox "Select a form or report before you ask for help."
                ShowHelpAPI = False
                Exit Function
            End If
    End If
    
    With obj
        ' Get the current object's hWnd, HelpFile, and HelpContextID properties.
        lnghWnd = .hWnd
        strHelpFile = .HelpFile
        lngContext = .HelpContextId
    End With
    
    lngRetVal = WinHelp(lnghWnd, strHelpFile, conHelpContext, lngContext)
    ShowHelpAPI = True
End Function


zhuyiwen

Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal Hwnd As Long, _
       ByVal lpHelpFile As String, ByVal wCommand As Long, _
       ByVal dwData As Any) 

Function ShowHelpAPI() As Boolean
    
    ' This procedure is used by the Show Me button on various Developer
    ' Solutions toolbars. It uses the WinHelp API function so that the
    ' Show Me Help button will provide context-sensitive Help regardless
    ' of the current state of the object. Make sure that the Help file is
    ' in the same directory as the Developer Solutions database.
    
    Dim lnghWnd As Long, strHelpFile As String, lngContext As Long
    Dim lngRetVal As Long, obj As Object
    
    On Error Resume Next
    Const conHelpContext = &H1
    Set obj = Screen.ActiveForm
    
    If Err = 2475 Then
        ' Active object is not a form.
        ' Reset Err and test for Report object.
        Err = 0
        Set obj = Screen.ActiveReport
            If Err = 2476 Then
                ' Current object is not a form or a report.
                MsgBox "Select a form or report before you ask for help."
                ShowHelpAPI = False
                Exit Function
            End If
    End If
    
    With obj
        ' Get the current object's hWnd, HelpFile, and HelpContextID properties.
        lnghWnd = .hWnd
        strHelpFile = .HelpFile
        lngContext = .HelpContextId
    End With
    
    lngRetVal = WinHelp(lnghWnd, strHelpFile, conHelpContext, lngContext)
    ShowHelpAPI = True
End Function

这是开发版代码库中的范例,使用.HLP。

zhuyiwen
TMTONY比我快!

tmtony
没你的提示,我一时还找不到:), 再说, 你的正确些啦,我还没加定义啦

zhuyiwen 
Sub AddHelpMenu()
    Dim cbrBar          As CommandBar
    Dim ctlCBarControl  As CommandBarControl
    
    ' Set a reference to the Help menu.
    Set cbrBar = CommandBars!Help
    
    ' If the My Help command already exists, delete it.
    For Each ctlCBarControl In cbrBar.Controls
        If ctlCBarControl.Caption = "&My Help" Then
            cbrBar.Controls("My Help").Delete
        End If
    Next
    
    ' Create a new CommandBarControl object on the Help menu
    ' and add a reference to it.
    Set ctlCBarControl = cbrBar.Controls.Add(Type:=msoControlButton)
    
    ' Set properties of the new command to display context-sensitive
    ' pop-up help. Set OnAction to call DisplayHelp procedure to display
    ' a help topic when clicked.
    With ctlCBarControl
        .Caption = "&My Help"
        .BeginGroup = True
        .FaceId = 0
        .OnAction = "DisplayHelpXL"
        .HelpFile = "sample.chm"
        .HelpContextID = 1000
        .Visible = True
    End With
End Sub



Sub DisplayHelpXL()
    Application.Help Currentproject.Path & "\sample.chm", 2001
End Sub
 
Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" _
    (ByVal hwndCaller As Long, _
    ByVal pszFile As String, _
    ByVal uCommand As HH_COMMAND, _
    dwData As Any) As Long
  
zhuyiwen
田野,够不够?

你怎么请我吃饭?[em26]

田野
够,够,我 GO,GO,开溜!:)

binbow_z
用SHELL调用HH.exe文件打开.chm文件

田野
binbow_Z,您的方法很好,再问一下,HH.EXE有没有定位的参数,就是说打开chm文件时根据不同情况定位于某一位置。

 
(开发文档_帮助制作-相关文章技巧链接):
如何制作CHM帮助文件及使用
在VB中调用CHM 帮助的几种方法
分享