1

据我了解,当程序访问 .hlp 文件时,Window 的帮助程序会处理该请求。我拥有的是一个较旧的 exe,它希望通过菜单选项跳转到 .hlp 文件中的特定主题。当然,Windows 帮助会吐出一般的“找不到主题”错误,但我真正想要的是它是否还告诉我它期望找到的主题,这样我就可以创建一个包含缺失主题的 .hlp。有没有办法查看更详细的错误日志或查看请求本身而不需要 exe 的来源?

错误窗口

4

1 回答 1

1

简短的故事——没有你的 *.exe 的源代码(或反编译),也没有我首先想到的旧的 WinHelp 项目文件——没有机会。

WinHelp (.hlp) 格式自 1990 年代初就已存在,并被 HTML Help 1.x (.chm) 取代。Microsoft 强烈建议您在大约十年前离开 WinHelp。但是对于一个测试应用程序,它在我的 Windows10 机器上运行,就像一个魅力(请原谅德语文本),需要一些繁重的步骤来修复过去的 WinHelp 查看器。请注意,这里没有提到用于 *.chm 帮助文件的 HTMLHelp 查看器。

在此处输入图像描述

Windows 帮助 (WinHlp32.exe) 是一个帮助程序,它包含在从 Microsoft Windows 3.1 操作系统开始的 Microsoft Windows 版本中。但是,Windows 帮助程序在许多版本中都没有重大更新,并且不再符合 Microsoft 的标准。因此,从发布 Windows Vista 开始并在 Windows 7 中继续,Windows 帮助程序将不再作为 Windows 的功能提供。如果要查看 32 位 .hlp 文件,必须从 Microsoft 下载中心下载并安装程序 (WinHlp32.exe)。

我假设你已经安装了这个包并且有一个正在运行的 32 位应用程序,它在你的 Windows7 机器上运行 WinHelp *.hlp 文件。菜单中只有一个主题似乎对您不利。

这可能是由于应用程序调用了错误的 TopicID 或连接的帮助文件的 TopicId 中的拼写错误。也许程序员没有指定主题。导致您的错误的原因很多。

如果您在帮助创作方面有一些经验,您就会知道编译的 WinHelp 文件 *.hlp 包含一个映射 helpTopicId = topic。编译 WinHelp 时,您将再次需要此映射和别名文件!

创建一个新的 WinHelp *.hlp 文件是一种艰难的方式(对我来说也是 15 年后没有使用)。您必须使用例如已编辑的主题进行反编译并再次编译。您可能会被警告 - 因为丢失了 contextId。请参阅我网站上的旧内容:将 WinHelp (HLP) 转换为 HTMLHelp (CHM) - 免费软件教程

使用 HelpContextId 的反编译器可能会很幸运

在此处输入图像描述

通常只有一个 App.HelpFile *.hlp 从应用程序链接。要在标准窗口中显示特定主题,来自 Visual Basic 6 的调用如下所示:WinHelp(hWnd, App.HelpFile, HELP_CONTEXT, ByVal CLng(TopicID))。因此,只有代码更新才能让您有机会获得新的 TopicId。这必须与(新的)帮助文件相匹配。

于 2016-02-14T17:34:49.953 回答