いくつかの考えだけですが、最初のヒントには注意してください。
ファイル hh.dat はどのような目的に役立ちますか?
hh.dat ファイルには、システム上のすべての HTMLHelp ファイル (*.CHM) に関するユーザー固有の情報 (位置、お気に入りのトピック、検索履歴など) が保存されており、何らかの形で破損している場合はエラーが発生する可能性があります。ファイル hh.dat を削除するか名前を変更して、システム上のすべての (!) CHM ウィンドウをデフォルト設定にリセットします。次のディレクトリに hh.dat があります。
\Documents and Settings\%username%\Application Data\Microsoft\HTML Help
次に任意の .chm ファイルを開くと、Windows によって新しいバージョンの hh.dat が作成されます。
Microsoft の HTML ヘルプ API ドキュメント ( http://msdn2.microsoft.com/en-us/library/ms644703(VS.85).aspx ) によると:
HTML ヘルプ API を使用して作成したヘルプ ウィンドウは、呼び出し側 (親プログラム) によって所有されます。これにより、ヘルプ ウィンドウは親ウィンドウの上に表示されますが、フォーカスのある他のプログラムの上には表示されません。
したがって、ヘルプ ウィンドウがフォーカスを保持しているという事実は、実際には標準的な動作です。
典型的な HTML ヘルプ API 呼び出しを見ると、最初のパラメーターが、ヘルプが呼び出されるウィンドウの「ハンドル」を指定していることがわかります。
HtmlHelp(hwndCaller,"YourHelpFile.chm",HH_HELP_CONTEXT,1001);
開発者が呼び出しの最初のパラメーターとしてウィンドウ ハンドルではなく "null" を渡すと、ヘルプ ウィンドウは呼び出し側プログラムによって所有されなくなり、フォーカスを保持しません。変更された呼び出しの例を次に示します。
HtmlHelp(0,"YourHelpFile.chm",HH_HELP_CONTEXT,1001);
ただし、これには欠点があります。この方法で呼び出されると、ヘルプ ウィンドウは呼び出し側プログラムのアクションに拘束されなくなります。そのため、ユーザーがプログラムを閉じるか最小化しても、ヘルプ ウィンドウも閉じたり最小化したりしません。