首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Microsoft 2007数据库应用程序HTML帮助打开多个chm文件实例

Microsoft 2007数据库应用程序HTML帮助打开多个chm文件实例
EN

Stack Overflow用户
提问于 2014-08-07 12:44:55
回答 1查看 1.2K关注 0票数 0

我们使用HTML工作室创建了帮助文件(.chm),

在Access 2007数据库表单属性中,我们设置了"Help File“= HelpApp.chm和"Help Context ID”propertiey = 1001,因此当我们按下F1时,它就会用这个上下文ID打开帮助文件。

问题是,当我们多次按F1 (每次针对不同的表单或帮助主题)时,它会打开帮助文件的多个实例。我还观察到,如果我多次按同一表单上的F1,它也会打开多个实例。

我们不希望创建多个帮助文件实例。

如何防止打开帮助文件的多个实例?

数据库应用程序正在开发的Microsoft 2007,.accdb文件格式。

正在创建的帮助文件HTML帮助讲习班4.74.8702.0

我搜索了internet,但是在Microsoft应用程序中没有有多个帮助文件实例打开的文章。但是有一篇文章讨论了C#应用程序,

How do I limit my Windows application to spawning a single instance of a process?

我不知道是否有上述解决方案,检查流程是否已经退出?还是ProcessStartInfo?但我需要这个在VBA。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-11 19:06:00

这个问题很困难,取决于如何调用帮助。您必须提供更多信息和调用VBA代码。在将Access窗口移动到一个新位置之后,我只看到过一次帮助窗口的多个实例的问题,然后按下F1按钮。但再也没见过。

我记得有一件事是hh.dat的问题。hh.dat文件将用户特定的信息存储在系统上的所有HTMLHelp文件(*.CHM)上(位置、最喜欢的主题、搜索历史记录等),如果它已经损坏,可能会导致错误。删除或重命名文件hh.dat以重置所有(!)将系统上的CHM窗口设置为默认设置。您应该在这个目录中找到hh.dat:

\文档和设置\%用户名%\应用程序数据\Microsoft\HTML帮助或

C:\Users\%username%\AppData\Roaming\Microsoft\HTML帮助

当您下次打开任何hh.dat文件时,Windows将创建一个新版本的.chm。

尝试将F1设置为AutoKeys (请参阅快照)。

添加一个由HTMLHelp API调用帮助的模块(请参阅代码示例):

代码语言:javascript
代码运行次数:0
运行
复制
Option Compare Database
Option Explicit

'******************************************************************************
'----- Modul - definition for HTMLHelp - (c) Ulrich Kulle, www.help-info.de
'----- 2014-08-26 Version 0.1.9000
'******************************************************************************

Declare Function IsWindow Lib "user32.dll" (ByVal hWnd As Long) As Long

Private Declare Function SendMessage Lib "user32" _
 Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
 ByVal wParam As Long, lParam As Any) As Long

Private 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

Declare Function HTMLHelpTopic Lib "hhctrl.ocx" Alias "HtmlHelpA" _
         (ByVal hwndCaller As Long, ByVal pszFile As String, _
         ByVal uCommand As Long, ByVal dwData As String) As Long

Private Declare Function HtmlHelpSearch Lib "hhctrl.ocx" Alias "HtmlHelpA" _
        (ByVal hwndCaller As Long, ByVal pszFile As String, _
        ByVal uCommand As Long, dwData As HH_FTS_QUERY) As Long

'--- to keep the handle of the HH windows when calling help by API --------
Public HHwinHwnd As Long

'--- some constants used by the API ---------------------------------------
Public Const HH_DISPLAY_TOPIC = &H0     ' select last opened tab, [display a specified topic]
Public Const HH_DISPLAY_TOC = &H1       ' select contents tab, [display a specified topic]
Public Const HH_DISPLAY_INDEX = &H2     ' select index tab and searches for a keyword
Public Const HH_DISPLAY_SEARCH = &H3    ' select search tab and perform a search

Public Const HH_HELP_CONTEXT = &HF      ' display mapped numeric value in dwData

Public Const HH_CLOSE_ALL = &H12

Public Type HH_FTS_QUERY                ' UDT for accessing the Search tab
  cbStruct          As Long             ' Sizeof structure in bytes.
  fUniCodeStrings   As Long             ' TRUE if all strings are unicode.
  pszSearchQuery    As String           ' String containing the search query.
  iProximity        As Long             ' Word proximity.
  fStemmedSearch    As Long             ' TRUE for StemmedSearch only.
  fTitleOnly        As Long             ' TRUE for Title search only.
  fExecute          As Long             ' TRUE to initiate the search.
  pszWindow         As String           ' Window to display in
End Type

Public Function HFile(ByVal i_HFile As Integer) As String
'----- Set the string variable to include the application path of helpfile
  Select Case i_HFile

  '//--- default help file
  Case 1
    HFile = CurrentProject.Path & "\CHM-example.chm"
  Case 2
'----- Place other Help file paths in successive case statements
    HFile = CurrentProject.Path & "\CHM-example.chm"
  End Select
End Function

Public Sub OpenHelp(strHelpFile As String, lngID As Long)
    Dim hWnd As Long
    Dim strHelpFile As String
    strHelpFile = CurrentProject.Path & "\CHM-example.chm"
    hWnd = HtmlHelp(Application.hWndAccessApp, strHelpFile, HH_DISPLAY_TOC, lngID)
End Sub

Public Function CallHelp()
'//--- TEST invoking help with different methods ----------------------------------
    'OpenHelp strHelpFile, 20010
    'ShowContents 1
    'ShowIndex 1
    'ShowSearch 1
    If Screen.ActiveForm.Name = "Coordinates-Form-1" Then
        MsgBox Screen.ActiveForm.Name
        ShowTopicID 1, 10010
    ElseIf Screen.ActiveForm.Name = "Coordinates-Form-2" Then
        MsgBox Screen.ActiveForm.Name
        ShowTopicID 1, 20010
    Else
        ShowContents 1
    End If
End Function

Public Sub ShowContents(ByVal intHelpFile As Integer)
    HHwinHwnd = HtmlHelp(Application.hWndAccessApp, HFile(intHelpFile), HH_DISPLAY_TOC, 0)
End Sub

Public Sub ShowIndex(ByVal intHelpFile As Integer)
    HHwinHwnd = HtmlHelp(Application.hWndAccessApp, HFile(intHelpFile), HH_DISPLAY_INDEX, 0)
End Sub

Public Sub ShowTopic(ByVal intHelpFile As Integer, strTopic As String)
    HHwinHwnd = HTMLHelpTopic(Application.hWndAccessApp, HFile(intHelpFile), HH_DISPLAY_TOPIC, strTopic)
End Sub

Public Sub ShowTopicID(ByVal intHelpFile As Integer, IdTopic As Long)
    HHwinHwnd = HtmlHelp(Application.hWndAccessApp, HFile(intHelpFile), HH_HELP_CONTEXT, IdTopic)
End Sub

'------------------------------------------------------------------------------
'----- display the search tab
'----- bug: start searching with a string dosn't work
'------------------------------------------------------------------------------
Public Sub ShowSearch(ByVal intHelpFile As Integer)
Dim searchIt As HH_FTS_QUERY
  With searchIt
    .cbStruct = Len(searchIt)
    .fUniCodeStrings = 1&
    .pszSearchQuery = "foobar"
    .iProximity = 0&
    .fStemmedSearch = 0&
    .fTitleOnly = 1&
    .fExecute = 1&
    .pszWindow = ""
  End With
  Call HtmlHelpSearch(0&, HFile(intHelpFile), HH_DISPLAY_SEARCH, searchIt)
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25182899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档