2016-02-11 49 views
1

据我的理解,当程序访问.hlp文件时,Window的帮助程序会处理请求。我所拥有的是一个较老的exe,它想通过菜单选项跳转到.hlp文件中的特定主题。当然,Windows帮助提供了通用的“找不到主题”的错误,但是我真正喜欢的是如果它也告诉我它期望找到什么主题,所以我可以创建一个包含缺少主题的.hlp。有什么方法可以查看更详细的错误日志或查看请求本身,而不需要exe的源代码?从exe中调试嵌入的缺少帮助主题

error window

+0

你正在运行什么操作系统版本? –

+0

哦,当然,WIndows7,64位。但该计划本身显着更老...大约1998/1999年。 – Rajada

+0

我想昨天添加标签'Winhelp'是在这个问题的背景下。 –

回答

1

短篇小说 - 没有你的* .exe(或反编译)的源代码,并没有旧的WinHelp项目文件,我想说的第一个念头 - 没有机会。

WinHelp(.hlp)格式自20世纪90年代初期就已出现,并已被HTML Help 1.x(.chm)所取代。微软强烈建议你大约在十年前离开WinHelp。但是对于一个测试应用程序来说,它运行在我的Windows10机器上,就像一个魅力(借口德语文本),并采取了一些重要步骤来修复WinHelp Viewer。请注意,我不会说这里背景中显示的* .chm帮助文件的HTMLHelp查看器。

enter image description here

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。见旧的东西从我的网站,网址为: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的机会。这必须匹配(新)帮助文件。

+0

是的,我正在运行Microsoft提供的帮助版本作为可选下载。但似乎我并不完全清楚。我已经用一个十六进制编辑器在应用程序周围挖了一遍,而且我不完全确定菜单选项是否已经实现。我所希望的是,有人知道如何捕捉到“找不到主题”的错误,并使用某种技巧来获取更多信息,所以我不必强行猜测主题ID。喜欢,也许更多的信息被记录在事件查看器中。但如果真的没有办法吸引更多的信息,我想这是无法帮助的。 – Rajada

+0

@Rajada:如果可能的话,[反编译器](http://stackoverflow.com/questions/414068/is-there-a-visual-basic-6-decompiler)是一个不错的选择。您也可以创建一个带有200个虚拟主题的新_hlp_文件,以找出主题ID并将其重命名为测试。 ** TopicID **必须从1增加1到200,这很有用。 –

+0

@Rajada:如果他们已经阅读[MSDN]的摘录(https://msdn.microsoft.com/en-us/library/aa261329%28v=vs.60%29.aspx?f=255&MSPPError=- 2147217396):_提示如果您有几个帮助主题,在开始输入HelpContextID之前可能有助于建立编号方案。为应用程序中的每个表单或主要元素指定不同范围的数字,例如,第一个表单为1000 - 1999,第二个表单为2000 - 2999,等等._ –