从 exe 调试嵌入的缺失帮助主题
Debug an embedded missing help topic from an exe
据我了解,当程序访问 .hlp 文件时,Window 的帮助程序会处理该请求。我拥有的是一个较旧的 exe,它希望通过菜单选项跳转到 .hlp 文件中的特定主题。当然 Windows Help 会吐出一般的 "can't find topic" 错误,但我真正想要的是它是否还告诉我它期望找到什么主题,这样我就可以创建一个包含缺失主题的 .hlp包括。有什么方法可以查看更详细的错误日志或查看请求本身而无需 exe 源?
短篇小说 - 没有你的 *.exe(或反编译)的源代码,也没有旧的 WinHelp 项目文件,我首先想到的是 - 没有机会。
WinHelp (.hlp) 格式早在 1990 年代就已存在,并被 HTML 帮助 1.x (.chm) 取代。大约十年前,Microsoft 强烈建议您离开 WinHelp。但是对于测试应用程序来说,它在我的 Windows10 机器上 运行 就像一个魅力(请原谅德语文本),通过一些繁重的步骤来修复过去的 WinHelp 查看器。请注意,我这里说的不是背景中显示的 *.chm 帮助文件的 HTMLHelp Viewer。
Windows Help (WinHlp32.exe) 是从 Microsoft Windows 3.1 操作系统开始的 Microsoft Windows 版本中包含的帮助程序。但是,Windows 帮助程序没有对许多版本进行重大更新,不再符合 Microsoft 的标准。因此,从 Windows Vista 的发布开始到 Windows 7,Windows 帮助程序将不会作为 Windows 的功能提供。如果您想查看 32 位 .hlp 文件,您必须从 Microsoft 下载中心下载并安装该程序 (WinHlp32.exe)。
我假设您已经安装了这个软件包并且在您的 Windows7 机器上有一个 运行 32 位应用程序及其 运行 WinHelp *.hlp 文件。菜单中只有一个主题似乎对您不利。
这可能是由于应用程序调用了错误的 TopicID 或连接的帮助文件的 TopicId 中的拼写错误。也许程序员没有分配主题。导致您错误的原因太多了。
如果您有一些帮助创作经验,您就会知道编译后的 WinHelp 文件 *.hlp 包含一个映射 helpTopicId = topic。编译 WinHelp 时,您将再次需要此映射和别名文件!
创建一个新的 WinHelp *.hlp 文件是一个困难的方法(对我来说也是 15 年未使用)。您必须使用例如再次反编译和编译编辑的主题。您可能会收到警告 - 因为丢失了 contextId。从我的网站查看旧内容:Converting WinHelp (HLP) to HTMLHelp (CHM) - a freeware tutorial
你可能会幸运地使用 HelpContextId 的反编译器
通常只有一个 App.HelpFile *.hlp 从应用程序链接。要以标准 window 显示特定主题,Visual Basic 6 的调用如下所示:
WinHelp(hWnd,App.HelpFile,HELP_CONTEXT,ByVal CLng(TopicID))。因此,只有代码更新才能让您有机会获得新的 TopicId。这必须匹配(新)帮助文件。
据我了解,当程序访问 .hlp 文件时,Window 的帮助程序会处理该请求。我拥有的是一个较旧的 exe,它希望通过菜单选项跳转到 .hlp 文件中的特定主题。当然 Windows Help 会吐出一般的 "can't find topic" 错误,但我真正想要的是它是否还告诉我它期望找到什么主题,这样我就可以创建一个包含缺失主题的 .hlp包括。有什么方法可以查看更详细的错误日志或查看请求本身而无需 exe 源?
短篇小说 - 没有你的 *.exe(或反编译)的源代码,也没有旧的 WinHelp 项目文件,我首先想到的是 - 没有机会。
WinHelp (.hlp) 格式早在 1990 年代就已存在,并被 HTML 帮助 1.x (.chm) 取代。大约十年前,Microsoft 强烈建议您离开 WinHelp。但是对于测试应用程序来说,它在我的 Windows10 机器上 运行 就像一个魅力(请原谅德语文本),通过一些繁重的步骤来修复过去的 WinHelp 查看器。请注意,我这里说的不是背景中显示的 *.chm 帮助文件的 HTMLHelp Viewer。
Windows Help (WinHlp32.exe) 是从 Microsoft Windows 3.1 操作系统开始的 Microsoft Windows 版本中包含的帮助程序。但是,Windows 帮助程序没有对许多版本进行重大更新,不再符合 Microsoft 的标准。因此,从 Windows Vista 的发布开始到 Windows 7,Windows 帮助程序将不会作为 Windows 的功能提供。如果您想查看 32 位 .hlp 文件,您必须从 Microsoft 下载中心下载并安装该程序 (WinHlp32.exe)。
我假设您已经安装了这个软件包并且在您的 Windows7 机器上有一个 运行 32 位应用程序及其 运行 WinHelp *.hlp 文件。菜单中只有一个主题似乎对您不利。
这可能是由于应用程序调用了错误的 TopicID 或连接的帮助文件的 TopicId 中的拼写错误。也许程序员没有分配主题。导致您错误的原因太多了。
如果您有一些帮助创作经验,您就会知道编译后的 WinHelp 文件 *.hlp 包含一个映射 helpTopicId = topic。编译 WinHelp 时,您将再次需要此映射和别名文件!
创建一个新的 WinHelp *.hlp 文件是一个困难的方法(对我来说也是 15 年未使用)。您必须使用例如再次反编译和编译编辑的主题。您可能会收到警告 - 因为丢失了 contextId。从我的网站查看旧内容:Converting WinHelp (HLP) to HTMLHelp (CHM) - a freeware tutorial
你可能会幸运地使用 HelpContextId 的反编译器
通常只有一个 App.HelpFile *.hlp 从应用程序链接。要以标准 window 显示特定主题,Visual Basic 6 的调用如下所示: WinHelp(hWnd,App.HelpFile,HELP_CONTEXT,ByVal CLng(TopicID))。因此,只有代码更新才能让您有机会获得新的 TopicId。这必须匹配(新)帮助文件。