Microsoft WinHelp

Microsoft WinHelp は、マイクロソフトが開発した独自のオンラインヘルプの形式であり、専用ヘルプブラウザ winhelp.exe または winhlp32.exe で表示できる。ファイル形式は Rich Text Format（RTF）に基づいている。Windows 3.0 から Windows XP までで広く使われている。Windows Vista では新しいヘルプフォーマットへの移行を促すため、WinHelp は削除された。

**歴史**
 1990年 - WinHelp 1.0 が Windows 3.0 の一部として出荷された。- 1995年 - WinHelp 4.0 が Windows 95 / Windows NT の一部として出荷された。- 2006年 - マイクロソフトは WinHelp から新システムへの移行（Windows Vista には WinHelp がデフォルトでは含まれない）を発表。WinHelp ファイルには16ビット版と32ビット版があり、Vista はこれを別々に扱う。32ビットの .hlp ファイルを表示しようとすると、Vista ではそのフォーマットがサポートされていない旨が表示される。32ビット版の WinHelp のビューワは Microsoft Download Center からダウンロード可能 。16ビット版 WinHelp ファイルは Vista でも最初から表示可能。

**ファイルフォーマット**
WinHelp ファイルの拡張子は ".hlp" である。オプションで目次ファイル（.cnt）が付属することもある。Windows が WinHelp ファイルを開くと、.gid ファイルが同じディレクトリに作成される。これには、.hlp ファイルに関する情報（ウィンドウサイズや位置など）が格納される。ユーザーが「検索」タブをクリックし、キーワードの索引付けを可能にすると、Windows は .fts（full text search）ファイル（索引ファイル）を生成する。
WinHelp ファイルを逆コンパイルすることもでき、ヘルプのソース文書や画像ファイルのコピーを得ることができる。HPJファイルは、Help Workshop などで作成されるプロジェクトファイルである。HPJファイルには、ヘルプの本体であるRTFファイルに関する情報、アプリケーション本体からヘルプファイルへのリンク、オンラインヘルプの見た目（ウィンドウサイズ、デフォールトのボタン、色合い）などの情報が含まれる。CNTファイルにはヘルプの目次が含まれている。SHGファイルはヘルプ内の画像（BMPファイル）にリンクを埋め込むものである。
これらのファイルを読み込んで参照可能とするツールはいくつか存在する（ Help to RTF、 winhelpcgi など）。

**ソースファイルとコンパイル**
.hlp ファイルは一般に複数のソースファイルからコンパイルされ生成される。ソースファイルとしては、.rtf 形式の文書本体、.hpj のプロジェクトファイル、各種画像ファイル（.bmp、.wmf、.shg）がある。オプションで .cnt ファイル（目次）も生成される。
.rtf ファイル内では、トピックスが改ページで分離されている。各トピックには一連の脚注があり、そこにはヘルプコンパイラ向け情報が含まれている。- "#" の脚注はトピックIDを記述し、トピック間のリンク生成に使われる。- "$" の脚注には目次や索引に表示されるトピック名を記述する。- "K" の脚注には索引のためのキーワードを記述する。- "A" の脚注には関連項目キーワードを記述する。- "*" の脚注にはビルドタグを記述する。- "+" の脚注にはブラウズ順序に関する情報を記述する。- "!" の脚注にはトピックエントリマクロを記述する。
"#" の脚注のみが必須であり、他はオプションである。
テキストのフォーマット情報は、ボールド体、イタリック体、文字色といった限られたものしかない（例えば、下付き添え字や上付き添え字は表示できない）。
画像の埋め込みは "{bmc image.bmp}" のようなコードで行われる。サポートされている画像フォーマットは .bmp、.wmf、.shg（イメージマップ用で、画像にポップアップやリンクを設定する）がある。
ソースファイルを作成したら、WinHelp コンパイラ（HCW.exeなど）でそれらをコンパイルするか、RoboHelp などの商用ソフトウェアでコンパイルする。

**見た目と機能**
起動の方法やヘルプ作者の選んだ設定によって、WinHelp 起動時にはデフォルトのトピック、目次、キーワードのいずれかが表示される。
WinHelp ファイル内のトピックは別ウィンドウで表示され、その大きさと初期位置はヘルプ作者が設定できる。ユーザーはそのウィンドウの大きさを変更したり移動させたりできる。ヘルプ作者は、そのような変更をヘルプファイルに保持して次回起動時に利用するよう設定することもできるし、常にデフォルトの大きさと位置で起動するようにもできる。
トピックを開くと、ウィンドウの一番上にヘルプ作者が設定したトピックのタイトルが表示される。その下には、様々な制御に使えるメニュー項目（ファイル、編集、しおり、オプション、ヘルプ）が並ぶ。その下に各種ボタンが並ぶ。どのボタンを見せるかはヘルプ作者が制御する。主なボタンとしては、「目次」、「キーワード」、「戻る」、「印刷」と、> があり、ファイル上の前後を表示するのに使われる。ヘルプ作者は特定のトピックにジャンプするボタンなど、独自のボタンを作成することもできる。
ボタンの下にメインとなるテキストが表示される。テキストには通常見出しがあり、ボールド体や大きめのフォントで表示される。この見出しをテキストをスクロールしても移動しない領域にすることもできる（スクロールしない領域はテキスト先頭部分でしか設定できない）。スクロールしない領域を使う場合、ヘルプ作者がその大きさと背景色を設定できる。
ヘルプ作者はメインのテキスト表示領域の背景色も設定できる。テキストのフォーマットや配置は様々である。ジャンプ（リンク）の設定された文字列は緑色で実線のアンダーラインが引かれている。それをシングルクリックするとそれに対応したトピックが表示される。場合によっては別のヘルプウィンドウを開いて情報を表示することもある。ポップアップの設定された文字列は緑色で破線のアンダーラインが引かれている。それをシングルクリックするとメニューやボタンの無い小さなウィンドウが開き、簡単な解説が表示される。ポップアップウィンドウは、ユーザーが別の箇所をクリックしたり、キーを押下することで消える。
トピックには最後に関連項目ジャンプ（リンク）が置かれていることが多い。単に関連項目という小見出しの後にジャンプ項目が並んでいるだけという場合もあるし、ヘルプ作者の設定によってボタンが配置され、それをクリックするとダイアログボックスが開いて、関連項目を選択できるようになっている場合もある。
トピック以外に目次とキーワードがヘルプシステムに含まれることが多い。これらはタブ付きウィンドウとして別個に表示される。目次タブをクリックすると目次が表示され、見出しが一覧表示される。見出し（本）には本のようなアイコンが付随していて、トピックにはページのようなアイコンが付随している。トピックをダブルクリックすると、そのトピックの内容が表示される。キーワードタブをクリックすると、文字入力フィールドとキーワードの一覧が表示される。入力フィールドに文字を入力すると、その内容に最も近いキーワードへとキーワード一覧が自動スクロールする。キーワードをダブルクリックすると、そのキーワードに関連するトピックが1つの場合は直接トピックが表示され、そうでない場合は関連するトピックの一覧が表示される。キーワードはユーザーが必要な情報を探す上で非常に重要なツールである。場合によっては、さらに「テキスト検索」タブがあり、キーワードに限らずテキストの全文検索ができるようになっている。
WinHelp には文脈依存ヘルプと言われる機能もある。文脈依存ヘルプは、ユーザーがアプリケーションを使っている現在状態に対して適切な補助となるトピックを表示するものである。
セキュリティ的には危険だが、WinHelp のトピックにDLLファイル内のコードを対応させることもできる。これによって.HLPファイルが実質的に実行ファイルと等価になる。

**サポート終了**
2006年の WritersUA という会議で、マイクロソフトは WinHelp の段階的サポート停止を発表した。Ted Dworkin（Director of Windows Support Experience）によると「WinHelpはVistaのコード標準に適合しない。その標準には、セキュリティ、信頼性、性能といった観点が含まれる。WinHelp を Vista のコード標準に適合させるには一から書き直すしかない。しかし、Vista 向けには既に他に2種類のヘルプシステムがあり、（WinHelp の書き換えは）合理的でない」とのことである。
新たなライセンス契約により、各アプリケーション開発者は WinHelp 用ライブラリをパッケージに含めることが禁止されている。したがって、ユーザーが明示的にダウンロードしてインストールしない限り、標準のVistaでは WinHelp のオンラインヘルプを参照することもできない。

**関連項目**
Microsoft Compiled HTML Help
*Microsoft Help 2

**脚注 ==