如何在Delphi 7中使用chm?

4
如何在 Delphi 7 程序中从 chm 文件调用帮助?
Application.HelpFile := 'd:\help.chm';
Application.HelpCommand(HELP_CONTEXT, 10);

结果是

为什么无法从此程序获取帮助?

此程序的帮助文档是使用Windows帮助格式创建的,它依赖于此Windows版本中不包含的功能。但是,您可以下载一个程序,以便您查看使用Windows帮助格式创建的帮助文档。

更多信息,请访问Microsoft帮助和支持网站。


如果您告诉我们您从哪个Windows版本收到了该错误消息,这也会有所帮助,因为这似乎是问题的一部分。您正在使用什么(哪个单元)来访问HTML帮助? - Ken White
2个回答

6
问题在于,默认情况下,Delphi 7 假定帮助文件使用旧的 WinHelp 格式,而该格式未随 Vista 一起发布。即使您的帮助文件具有 .chm 扩展名,Delphi 也会尝试使用 WinHelp 命令来显示它。由于 WinHelp 不在那里,您会收到报告的错误消息。
有各种方法可以让帮助系统显示 HTML 帮助。例如,常见的技术是为 Application 对象实现 OnHelp 处理程序,并将帮助路由到对 HtmlHelp API 的调用。我在最近的回答中给出了一个非常简单的示例。

@MarcovandeVoort 是的,那是一个好链接。我们在使用D6时就用过那段代码。我想OnHelp问题在D7中已经解决了。不过我从来没有用过D7。 - David Heffernan

1
打开CHM文件时,我使用以下代码:
    ShellExecute(Handle, 'open', PChar(ExtractFilePath(Application.ExeName) + 'help.chm'), nil, nil, SW_SHOW);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接