2

どうやら 2001 年から HTMLHelp でこのバグに遭遇したようです (まだ修正されていませんが、少なくとも文書化されています)。

「バグ: HTMLHelp() が間違ったヘルプ ファイルを開く」 http://support.microsoft.com/kb/267962/en-us

彼らが提案した「修正」は、CHMファイルの名前を変更することです。しかし、私は本当にそれをしたくありません。

詳細はこちら: 「​​The Same CHM Opens Bug」 http://kb.helpwaregroup.com/ms-html-help/hh-faq#TOC-The-Same-CHM-Opens-Bug

「最も簡単な解決策は、各 CHM を開く前に、HHCtrl.OCX ライブラリで FreeLibrary() を呼び出してから LoadLibrary() を呼び出すことです。

この 2 番目のソリューションは、アプリケーションが LoadLibrary を使用して HH API (HHCtrl.OCX) を動的にロードする場合にのみ機能します。API を静的にロードする VB などの言語で記述されたアプリケーションでは、これを行うことはできません。」

私のプログラムは .Net で、System.Windows.Form.Help.ShowHelp() を使用しています。p/Invoke などを使用して、HHCtrl.OCX を何らかの方法でアンロードすることでごまかすことは可能でしょうか? 他の提案はありますか?

編集:

詳しく説明すると、HTMLHelp には、Microsoft が 2001 年に認めた既知の問題がありますが、修正には至りませんでした。

私の場合、「... \Danish\Help.chm」と「... \English\Help.chm」という 2 つのヘルプ ファイルがありました。私のプログラムは、ユーザーが選択した言語に応じて、どちらかを開きます。問題は、ユーザーがヘルプ情報を表示し、次に言語を切り替えてから F1 を再度押すと、プログラムは別のヘルプ ファイルを開こうとしますが、ヘルプ サポート コードは以前に開いたヘルプ ファイルを再度開くことです。

既知の回避策がありますが、C++ プログラムにのみ適用できるように見えます。私のプログラムは .Net です。そこで、その回避策またはその他の修正を .Net プログラムに適用する方法を誰かが知っているかどうかを尋ねています。

4

1 に答える 1