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

Windows 从exe调试嵌入的缺少帮助主题,windows,executable,helpfile,winhelp,Windows,Executable,Helpfile,Winhelp,据我所知,当程序访问.hlp文件时,Window的帮助程序会处理该请求。我有一个旧的exe,它想通过菜单选项跳转到.hlp文件中的特定主题。当然,Windows帮助会抛出一般性的“找不到主题”错误,但我真正想要的是,如果它还告诉我它希望找到的主题,那么我就可以创建一个包含缺少主题的.hlp。是否有任何方法可以查看更详细的错误日志或查看请求本身,而无需exe的源 这篇短篇小说——没有*.exe(或反编译)的源代码,也没有我第一次想到的旧WinHelp项目文件——没有机会 WinHelp(.hlp)

据我所知,当程序访问.hlp文件时,Window的帮助程序会处理该请求。我有一个旧的exe,它想通过菜单选项跳转到.hlp文件中的特定主题。当然,Windows帮助会抛出一般性的“找不到主题”错误,但我真正想要的是,如果它还告诉我它希望找到的主题,那么我就可以创建一个包含缺少主题的.hlp。是否有任何方法可以查看更详细的错误日志或查看请求本身,而无需exe的源


这篇短篇小说——没有*.exe(或反编译)的源代码,也没有我第一次想到的旧WinHelp项目文件——没有机会

WinHelp(.hlp)格式自20世纪90年代初就已经存在,并被HTMLHelp1.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。查看我的网站上的旧资料,网址为:

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

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

您正在运行的操作系统版本是什么?哦,当然是WIndows7,64位。但是这个项目本身要老得多。。。大约在1998/1999年。我认为昨天添加的标签“Winhelp”与问题有关。您能否在问题(编辑)中共享应用程序和错误窗口的快照?这与生成帮助文件无关,我也不使用Winhelp。这是我原版文章中的一个输入错误。是的,我正在运行Microsoft提供的帮助版本作为可选下载。但我似乎不是很清楚。我已经用一个十六进制编辑器在应用程序中进行了深入研究,我甚至不能完全确定菜单选项是否已经实现。我所希望的是,有人知道如何捕捉“未找到主题”错误,并使用某种技巧从中获取更多信息,这样我就不必强行猜测主题ID了。比如,事件查看器中可能会记录更多信息。但是如果真的没有办法获取更多的信息,我想也没办法了。@Rajada:A是一个很好的选择,如果可能的话。您还可以创建一个包含200个虚拟主题的新hlp文件,以查找主题ID并将其重命名为test。TopICID必须从1增加到200乘以1,这是很有用的。@Rajada:忘记如果他们已经阅读了摘录自:Tip如果您有多个帮助主题,在您开始输入HelpContextID之前建立一个编号方案可能会有帮助。为应用程序中的每个表单或主要元素指定不同的数字范围,例如,第一个表单为1000–1999,第二个表单为2000–2999,依此类推。