1

私の理解では、プログラムが .hlp ファイルにアクセスすると、Windows のヘルプ プログラムが要求を処理します。私が持っているのは、メニュー オプションを介して .hlp ファイル内の特定のトピックにジャンプしたい古い exe です。もちろん、Windows ヘルプは一般的な「トピックが見つかりません」というエラーを吐き出しますが、私が本当に望んでいるのは、検索対象のトピックも教えてくれるので、不足しているトピックを含む .hlp を作成できることです。より詳細なエラー ログを表示したり、exe へのソースなしで要求自体を表示したりする方法はありますか?

エラーウィンドウ

4

1 に答える 1

1

短い話 - *.exe のソース コード (または逆コンパイル) がなく、古い WinHelp プロジェクト ファイルがなければ、私が最初に考えたことはありません。

WinHelp (.hlp) 形式は 1990 年代初頭から存在し、HTML Help 1.x (.chm) に取って代わられました。Microsoft は、約 10 年前に WinHelp から離れることを強くお勧めします。しかし、テストアプリケーションの場合、私のWindows10マシンで魅力的に(ドイツ語のテキストを許してください)、過ぎ去ったWinHelp Viewerを修正するためのいくつかの重い手順で実行されています. ここでは、背景に表示されている *.chm ヘルプ ファイルの HTMLHelp ビューアーについては触れていないことに注意してください。

ここに画像の説明を入力

Windows ヘルプ (WinHlp32.exe) は、Microsoft Windows 3.1 オペレーティング システム以降の Microsoft Windows バージョンに含まれているヘルプ プログラムです。ただし、Windows ヘルプ プログラムは、多くのリリースで大幅な更新が行われておらず、Microsoft の基準を満たしていません。したがって、Windows Vista のリリースから Windows 7 では、Windows ヘルプ プログラムは Windows の機能として出荷されません。32 ビットの .hlp ファイルを表示する場合は、Microsoft ダウンロード センターからプログラム (WinHlp32.exe) をダウンロードしてインストールする必要があります。

このパッケージをインストールし、Windows7 マシンで WinHelp *.hlp ファイルを実行している 32 ビット アプリケーションを実行していると仮定します。メニューの 1 つのトピックだけがあなたに悪いようです。

これは、アプリケーションによって呼び出された TopicID が間違っているか、接続されたヘルプファイルの TopicId のタイプミスが原因である可能性があります。プログラマーがトピックを割り当てていない可能性があります。エラーの原因はたくさんあります。

ヘルプ オーサリングの経験があれば、コンパイルされた WinHelp ファイル *.hlp に helpTopicId = topic のマッピングが含まれていることをご存知でしょう。WinHelp をコンパイルするときに、このマッピングとエイリアス ファイルが再び必要になります。

新しい WinHelp *.hlp ファイルを作成するのは難しい方法です (15 年も使用していない私にとっても)。たとえば、編集されたトピックを使用して、逆コンパイルして再度コンパイルする必要があります。contextId が失われるため、警告が表示される場合があります。私の Web サイトの古いものを参照してください: Converting WinHelp (HLP) to HTMLHelp (CHM) - a freeware tutorial

HelpContextId の逆コンパイラで幸運に恵まれるかもしれません

ここに画像の説明を入力

通常、アプリケーションからリンクされる App.HelpFile *.hlp は 1 つだけです。標準ウィンドウに特定のトピックを表示するには、Visual Basic 6 から次のように呼び出します: WinHelp(hWnd, App.HelpFile, HELP_CONTEXT, ByVal CLng(TopicID))。したがって、コードを更新するだけで、新しい TopicId を取得できます。これは、(新しい) ヘルプ ファイルと一致する必要があります。

于 2016-02-14T17:34:49.953 に答える