Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2019年03月02日] [更新 2019年04月21日] Delphi 一般・その他
   
HLP 形式ヘルプを CHM 形式のヘルプに変換
動作確認等 Windows 7 U64(SP1), Windows 10.0.17134 Pro
[整理番号 - 339]




  • 2019年04月08日
  • 処理用プログラムを大幅に変更.ツール類を設定しておけば,HLP ファイルを指定するだけで CHM ファイルが作成できるようにした.それに伴い記事の構成も大幅に変更
  • 2019年04月09日
  • [ヘルプましん] を一般ユーザ権限で利用している場合の対応処理を追加
  • 2019年04月15日
  • ファイルの仮想化を無効にしている環境への対応も含めて,管理者権限で起動するようにした
  • [ヘルプましん] の目次アイテムの一部が文字化けする現象を修正
  • 2019年04月17日
  • HTML ファイル生成時に,<TITLE> タグの一部が欠落することがある現象の対策コードを追加
  • 目次アイテムに相当する HTML ファイルの名前を,一連の数字の名前にするようにした




HLP 形式ヘルプを CHM 形式のヘルプに変換するツール
plConvertHLPtoHTML.zip [988 KB] 2019年04月21日版 (ソースコード付き,説明なし)
再配布自由


上のリンクから ZIP 書庫ファイルをダウンロードします.
ブロックを解除して解凍すると plConvertHLPtoHTML という EXE ファイルがあります.これが HLP 形式のヘルプファイルから CHM 形式のヘルプを作成するツール (プログラム) です.
ただし,この plConvertHLPtoHTML という.exe (以下,本プログラムと呼ぶ) だけでは変換できません.以下のツール類を利用して変換する形式になっています.[ヘルプましん] の利用は任意です.

  • 解凍専用ソフト Universal Extractor
  • HTML ヘルプ作成編集用ツール HTML Help Workshop (HTML ヘルプコンパイラが含まれている)
  • HTML ヘルプ作成編集用ソフト [ へるぷましん ]

HLP 形式 (WinHelp 形式) のヘルプファイルは,RTF (Rich Text Format, リッチテキストフォーマット) のテキストをコンパイルして作成するヘルプファイルです.一方の HTML ヘルプは HTML ファイルから作成するヘルプファイルです.この違いにより,HLP ファイルから HTML ヘルプを作成したままでは元の HLP ヘルプの体裁が保てるわけではありません.変換結果の HTML のコードの修正や編集,変更が必要となることがあります.
HTML ヘルプの作成編集には HTML 関係の知識が必要です.


[備考 1]
本プログラムを日本語が含まれるフォルダ (ディレクトリ) 内に置かないでください.処理に失敗します.また,フォルダのパス名に空白文字が含まれる場合も処理に失敗します.HLP ファイル名の長さが 8 文字を超えるファイルも処理できません.
これは処理に使用する Universal Extractor の仕様によるものです.

[備考 2]
本プログラムは日本語版 (SHIFT-JIS) の HLP ファイル専用ツールです.

[備考 3]
[Source] フォルダ内にあるのは Delphi 用のプログラムのソースコードです.本プログラムを修正したり,機能の追加や変更をしたい方のために添付しています.必要なければ削除してください.






01_ 解凍専用ソフト Universal Extractor を用意


HTML Help Workshop を使用すると HLP ファイルから HTML ファイルを生成できますが,HLP ファイルから直接は HTML ファイルを生成することはできません.HTML ファイルを生成するには,HLP ファイルのコンパイル時に使用した HPJ ファイル (WinHelp のプロジェクトファイル),RTF ファイル,画像ファイル等が必要です.これらは HLP ファイルをデコンパイル (逆コンパイル) することにより取り出せます.

Universal Extractor は解凍専用のアプリですが,HLP ファイルのデコンパイルの機能を実装しています.今回は以下の最初リンクのページの一番下の方から UniExtractRC1.zip をダウンロードして使用しました.
ダウンロードしたらブロックを解除して解凍しておきます.



[備考]
デコンパイル元 (解凍元) の HLP ファイルが日本語を含むフォルダ内に (ディレクトリ内に) あるとデコンパイルに失敗します.また,フォルダ名に空白文字がある場合も失敗します.


図1
HLP ファイルのデコンパイル用のツール
  • 今回は UniExtractRC1.zip をダウンロード
図2
ファイル構成
  • ダウンロードしたらブロックを解除して解凍展開しておく
  • UniExtract.exe が実行ファイル
図3
UniExtract.exe の初回起動時の画面
  • 後でも設定可能
図4
UniExtract.exe の操作画面




02_ HTML Help Workshop をインストール


HTML Help Workshop はマイクロソフトが提供している HTML ヘルプ作成編集用のツールです.
HTML ヘルプの作成には,この HTML Help Workshop に含まれている HHC.EXE (HTML Help Compiler) とランタイムライブラリが必要です.
本プログラムでは,HTML Help Workshop を利用して,HLP ファイルを逆コンパイルしてできた RTF ファイルから HTML ファイルを生成します.

HTML Help Workshop は以下からダウンロードできます.ダウンロードするのは htmlhelp.exe です.末尾に j が付いている htmlhelpj.exe は,HTML Help Workshop のヘルプの日本語版です.
ダウンロードしたらブロックを解除してこの EXE を実行します.



図5
HTML Help Workshop のダウンロード
  • htmlhelp.exe をダウンロード
図6
インストール
  • ブロックを解除して htmlhelp.exe を実行
  • 表示されるダイアログでは全て肯定的な選択をする

インストールが終了すると,[スタート] メニューに HTML Help Workshop の項目が追加されます.

HTML Help Workshop 用の日本語化のパッチが以下のサイトで提供されています.本ページの記事では,この日本語化した状態の画像を掲載しています.






03_HTML ヘルプ作成編集用ソフト [ ヘルプましん ] をインストール


[ヘルプましん] は,利用する予定がなければインストールする必要はありません.

HTML Help Workshop たけでも HTML ヘルプファイルを作成できますが,[ヘルプましん] というツールもあります.[ヘルプましん] は以下のリンクからダウンロードできます.今回ダウンロードしたのは HHDesigner251.zip です.
ダウンロードしたらブロックを解除して解凍し,インストール用のプログラム HHDesigner251.exe をインストールします.

HTML ヘルプ作成ツールは他にもありますが,日本語化されているのは少ないようです.ネットで調べてみてください.


図7
ファイル構成
  • HHDesigner251.exe がインストール用の EXE
図8
インストール開始

インストールが終了するとデスクトップに [ヘルプましん] のアイコンができます.このアイコンから [ヘルプましん] を起動して下図のような設定をします.

[ツール] から [環境設定] を選択します.
[プロジェクトディレクトリ] を,実在する任意のディレクトリ名にします.ただし,Program Files 等,システム関係のディレクトリ (フォルダ) を含めないでください.
[ヘルプましん] で作成した HTML ヘルプ関係のファイルは,このディレクトリの階層下に保存されます.これ以降では下図のディレクトリに設定したものとして説明しています.

[HTML Hlep コンパイラ] は,HTML Help Workshop のインストール先にある HHC.EXE にします.



図9
初期設定

[備考 1]
[プロジェクトディレクトリ] には Program Files ( Program Files (x86) ) やシステム関係のディレクトリ (フォルダ) を含めないでください.Windwos Vista 以降では,それらのディレクトリ内のファイル類は正常に処理することができません.
たとえ正常に処理できない場合でも,エラーが発生しないことがあります.


[ヘルプましん] を管理者に昇格しないで実行すると,設定内容は以下の場所に保存されます.エクスプローラのアドレス入力欄に以下のパス名を入力すると具体的なパス名を知ることができます.
これは Windows のファイルの仮想化の機能による結果です.
[ヘルプましん] は,UAC 等が問題とならない時代から更新されていません.Windows Vista 以降で使用するには,基本的には管理者権限でインストールして管理者権限で実行します.


// 64 bit の Windows の場合
%LOCALAPPDATA%\VirtualStore\Program Files (x86)\HelpMachine

// 32 bit の Windows の場合
%LOCALAPPDATA%\VirtualStore\Program Files\HelpMachine



[備考 2]
[ヘルプましん] を管理者権限で起動するようにするには,インストール先の HHDesigner.exe を選択してマウスの右ボタンクリックのメニューで [プロパティ] を選択します.表示されたファイルのプロパティのダイアログの [互換性] のタブを表示します.この [互換性] タブの [管理者としてこのプログラムを実行する] をチェックします.

[ヘルプましん] を管理者権限でインストールして,管理者権限で起動するようにしておくと,拡張子が .XHP のファイルをダブルクリックすることで [ヘルプましん] を起動できます.





04_使用するツール類を設定


ツール類が用意できたら本プログラムを起動しすま.本プログラムは管理者権限で使用するようになっています.起動時に管理者への昇格確認のダイアログが現れます.[はい] をクリックして起動して [ツール類設定] のタブを表示します.

一番上の入力欄には解凍専用ソフト Universal Extractor の EXE のフルパスを指定します.この解凍専用ソフトの EXE 名は UniExtract.exe です.
次の入力欄には HTML Help Workshop の EXE のフルパスを指定します. EXE 名は hhw.exe です.
最後の入力欄には [ヘルプましん] の EXE のフルパスを指定します.[ヘルプまのしん] の EXE 名は HHDesigner.exe です.[ヘルプまのしん] を使用しない場合は空欄にします.

HTML Help Workshop と [ヘルプましん] が正常にインストールしている環境では,初回の起動時に限り,自動的に設定するようになっています.



図10
ツール類の設定
  • [ヘルプましん] を使用しない場合は,一番下の入力欄を空にする




05_HLP ファイルを指定して処理を実行


変換処理を実行するには [変換処理] のタブを表示します.
HTML Help Workshop あるいは [ヘルプましん] が起動していたら閉じてください.

変換元の HLP ファイルを指定しますが,CNT ファイル (拡張子が .cnt のファイル) または TOC ファイル (拡張子が .toc のファイル) が HLP ファイルと同じ場所になければなりません.
[処理開始] ボタンをクリックすると,変換処理を開始します.元の HLP 形式のヘルプのページ数が多いと時間がかかります.

本プログラムは,処理中に他のツール (プログラム) を起動します.そのため,画面がチラついたりダイアログが現れることがありますが,それらのダイアログを操作しないでください.

下図は Winshot.hlp という HLP ファイルを変換した結果です.
項目アイテム数の () 内の値は,CNT ファイル,または TOC ファイルに記述してある目次アイテムの数です.その左側の数値が実際に処理した目次アイテムの数です.これらの値が同じであれば,全ての目次アイテムが処理できたことになります.



図11
HLP ファイルを指定して [処理開始]

[ヘルプましん] の設定が無効の場合は,HTML Help Workshop の CHM ヘルプのプロジェクトをコンパイルして CHM ヘルファイルを作成します.
処理が終了すると,本プログラムがあるフォルダ内に HelpWorkshop というフォルダができます.下図のように,このフォルダ内に CHM ファイルが保存されます.作成される CHM ファイルの名前は,元の HLP ファイルと同じ名前になります.



図12
作成された CHM 形式のヘルプファイル
  • ヘルプとして配布する際は,この CHM ファイルだけでよい

下図は,作成した CHM 形式のヘルプを表示した画面です.
HLP 形式 (WinHelp 形式) のヘルプでは,目次の部分と記事の表示が別のウィンドウです.しかも記事を表示すると目次のウィンドウは閉じてしまいます.CHM 形式のヘルプでは,目次の部分と記事が同じ 1 つのウィンドウに表示されます.



図13

[ヘルプましん] の設定が有効の時は,目次アイテムの処理が終了すると,[ヘルプましん] が起動して [ヘルプましん] のプロジェクトのコンパイルを開始します.このコンパイルが開始すれば,本プログラムの役目は終了です.本プログラムは閉じて構いません.
コンパイルが終了すると,プロジェクト名のフォルダ内に CHM ヘルプファイルが作成されます.CHM ファイルの名前は,元の HLP ファイルと同じ名前になります.

下図はコンパイル中の [ヘルプましん] の画面です.



図14

[備考 1]
逆コンパイル中に他のウィンドウをアクティブにすると,処理に失敗することがあります.
[ヘルプましん] でコンパイル中も,[ヘルプましん] と他のウインドウを操作したりするとコンパイルに失敗することがあります.

[備考 2]
別の HLP ヘルプファイルを処理すると,HelpWorkshop フォルダ内のフォルダとファイルは自動的に削除されなくりなます.必要であればフォルダ名を変更するとか,HelpWorkshop フォルダごと,あるいはフォルダ内のファイル類を別の場所に移動またはコピーしてください.




06_CHM プロジェクトの設定 - HTML Help Workshop


作成する CHM ヘルプの設定を変更,編集するには CHM ヘルプのプロジェクトを編集します.
そのためには HTML Help Workshop を起動して HTML Help Workshop のプロジェクトファイルを開きます.HTML Help Workshop のプロジェクトファイルは HelpWorkshop フォルダ内にできています.
[ファイル] [開く] で読み込みます.



図15
HTML Help Workshop のプロジェクトファイルを開く
  • 拡張子が .HHP のファイル

プロジェクトファイルを開くと下図のような画面となります.
[OPTIONS] または [WINDOWS] の部分をダブルクリックすると設定ダイアログが表示されます.それらのダイアログで設定します.
設定を変更したら [ファイル] [コンパイル] て CHM ファイルを再作成します.



図16
プロジェクトファイルを開いた時の画面
  • [OPTIONS] または
    [WINDOWS] の部分をダブルクリック
  • 設定用のダイアログが表示される
図17
[WINDOWS] をダブルクリックして表示したダイアログ




07_CHM プロジェクトの設定 - ヘルプましん


作成する CHM ヘルプの設定を変更,編集するには CHM ヘルプのプロジェクトを編集します. そのためには [ヘルプましん] を起動してプロジェクトファイルを開きます.プロジェクトファイルは,プロジェクト名のフォルダ内の拡張子が .XHP のファイルです.[ファイル] [プロジェクトを開く] でも読み込めます



図18
プロジェクトファイルを読み込む

プロジェクトファイルを開くと下図のような画面となります.プロジェクトの設定内容は,[プロジェクト] [プロジェクトのプロパティ] で表示されるダイアログで変更できます.設定を変更したら [プロジェクト] [プロジェクトをコンパイル] で CHM ファイルを再作成します.



図19
プロジェクトファイルを開いた時の画面
図20
プロジェクトのプロパティの設定ダイアログ




08_HTML における半角空白文字や TAB 文字等とページのデザイン


HTML ヘルプは,CHM ファイルに格納された HTML のコードを表示します.したがって,本項の説明はウェブブラウザで HTML ファイルを表示する時も同じです.

TAB 文字は,HTML Help Workshop で HTML ファイルを生成する時に失われます.HTMLでは TAB 文字は 1 文字の半角空白文字になります.また,連続した半角の空白文字は,HTML では 1 文字だけの半角空白文字として表示されます.連続した半角文字を HTML ヘルプで表示するには文字参照という機能を利用します.半角の空白文字の場合は,&nbsp; というコードを文字数分だけ記述します.

HTML Help Workshop は,HTML コードをを生成する際,改行 (\par) を段落タグである <P> タグに変換します.<P> タグの内容を表示した後,HTML では約 1.5 行の空白行になります.

また,HLP ヘルプで設定していた画像のクリッカブルマップの設定も解除されてなくなります.



下図は同じ WinShot.hlp を CHM 形式のヘルプに変換したヘルプの画面です.
このヘルプファイルは,WinShot というアプリに添付されているのではなく,有志の方が作成して提供しているものです.この例のように,単に CHM 形式のヘルプに変換するだけでなく,HTML のコードを編集したり CSS を使用すれば.ヘルプの記事の体裁を整えることができます.このようなことが可能なのも HTMLヘルプの特徴と言えます.

記事のデザイン等の体裁を整えるには,HTML コードを編集する必要があります.そのためには HTML や CSS (スタイルシート) の知識が必要です.HTML エディタ等が必要となるかも知れません.




図21




09_CHM ヘルプにおける外部ウェブページへのリンクの扱い


本プログラムを使用して HLP 形式のヘルプから CHM 形式のヘルプに変換すると,外部のウェブページへのリンクが無効になります.修正が必要です.
リンクには <A> タグを使用します.したがって,以下のようにすれば URL のページを CHM ヘルプの右ペインに表示することができます.

しかし,この記述の場合,ウェブページを表示する時にスクリプトのエラーが発生することがあります.このページ内のリンクをクリックして別のページを表示する時もスクリプトエラーが発生することがあります.それらのページの表示に必要な JavaScript や CSS が読み込まれていないと,そのページは正常に表示できないか,あるいは正業に機能しないことになります.


リスト1
<P><B>サポート</B></P>
<P>ホームページに掲示板(BBS)がありますので、ご活用ください。</P>
<P>ホームページ<a href="http://mrxray.on.coocan.jp/">http://mrxray.on.coocan.jp/</a>
</P>

この現象を回避するには,HLP 形式のヘルプと同じように,ウェブページをウェブブラウザで表示してしまうことです.
そのためには,以下のように target 属性の値を _blank にします.現在のほとんどのウェブブラウザでは,_blank は別タブでの表示となります.

CHM 形式のヘルプのウィンドウにウェブページを表示するのは無理があります.
CHM 形式のヘルプもウェブブラウザも HTML ファイルを表示する機能を実装していますが,CHM 形式のヘルプは,一般的なウェブブラウザとしての機能を実装しているわけではありません.


リスト2
<P><B>サポート</B></P>
<P>ホームページに掲示板(BBS)がありますので、ご活用ください。</P>
<P>ホームページ<a href="http://mrxray.on.coocan.jp/" target="_blank">http://mrxray.on.coocan.jp/</a>
</P>


図22
ブラウザで表示




10_HLP 形式ヘルプから CHM 形式ヘルプへの変換の可否等


本プログラムを使用しても HTML ヘルプに変換できない HLP ヘルプもあります.
HLP ファイルをデコンパイルして,HLP ヘルプのプロジェクトファイルである HDJ ファイルが取得できない HLP ヘルプは処理できません.

HLP ファイルと同時に使用される CNT または TOC ファイルがない HLP 形式のヘルプは HTML 形式のヘルプに変換できません.また,CNT ファイルまたは TOC ファイルがあっても,それらのファイルに目次アイテムとして有効な記述がない場合も変換できません.これらのファイルの記述は,HLP 形式のヘルプの作成者が決めていますから,本プログラムでは処理できないことがあります.

HLP ヘルプの中には他のヘルプ,あるいは他のファイルを参照しているだけの形式もあります.そのような HLP 形式のヘルプも変換できません.