从 2001 年开始,我显然在 HTMLHelp 中遇到了这个错误。(他们还没有修复它,但至少他们记录了它。)
“BUG:HTMLHelp() 打开错误的帮助文件” http://support.microsoft.com/kb/267962/en-us
他们建议的“修复”是让我重命名我的 CHM 文件。但我真的不想那样做。
这里有更多关于它的信息:“相同的 CHM 打开错误” http://kb.helpwaregroup.com/ms-html-help/hh-faq#TOC-The-Same-CHM-Opens-Bug
“最简单的解决方法是在打开每个 CHM 之前调用 HHCtrl.OCX 库上的 FreeLibrary() 然后 LoadLibrary()。
仅当您的应用程序使用 LoadLibrary 动态加载 HH API (HHCtrl.OCX) 时,第二个解决方案才有效。用 VB 等语言编写的静态加载 API 的应用程序将无法做到这一点。”
我的程序是 .Net,我正在使用 System.Windows.Form.Help.ShowHelp()。是否有可能通过某种方式卸载 HHCtrl.OCX 来作弊,例如使用 p/Invoke?还有其他建议吗?
编辑:
详细说明:HTMLHelp 中存在一个已知问题,Microsoft 已在 2001 年承认该问题,但从未着手修复。
就我而言,我有两个帮助文件,“... \Danish\Help.chm”和“... \English\Help.chm”。我的程序根据用户选择的语言打开一个或另一个。问题是,如果用户显示帮助信息,然后切换语言,然后再次按 F1,程序会尝试打开另一个帮助文件,但帮助支持代码会重新打开之前打开的帮助文件。
有一个已知的解决方法,但对我来说,它似乎只适用于 C++ 程序,而我的程序是 .Net。所以我问是否有人知道如何将这种变通方法或其他修复方法应用于.Net 程序。