从exe调试嵌入式缺少帮助主题

时间:2016-02-11 22:40:17

标签: windows executable helpfile winhelp

据我所知,当程序访问.hlp文件时,Window的帮助程序会处理请求。我所拥有的是一个较旧的exe,它想通过菜单选项跳转到.hlp文件中的特定主题。当然Windows帮助会发出通用的“找不到主题”错误,但我真正喜欢的是它是否还告诉我它期望找到什么主题,所以我可以创建一个包含缺少主题的.hlp。有没有办法查看更详细的错误日志或查看请求本身没有exe的源?

error window

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here

Windows帮助(WinHlp32.exe)是一个帮助程序,随Microsoft Windows 3.1操作系统一起提供。但是,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。请参阅我的网站上的旧内容:Converting WinHelp (HLP) to HTMLHelp (CHM) - a freeware tutorial

你可能会对HelpContextId

的反编译器感到幸运

enter image description here

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