

`Microsoft Excel 2000`に付属の`Visual Basicリファレンス`を`HTML形式`に変換したいと考えております。

`hh.exe` にてHTMLファイルの取り出しは行えましたが、`CHM形式`と比べ一部のリンクが欠落しておりました。

例として『Add メソッド』の場合は下記のリンクが欠落します。

[code]

    | 関連項目 | 使用例 | 対象 | アプリケーション情報 |
    
[/code]

また、`HTMLファイル(vamthadd.htm)`の該当の箇所にはリンクではなく、`OBJECT`タグが記載されておりました。

[code]

    <OBJECT ID="hhobj_1" TYPE="application/x-oleobject"
          CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
        <PARAM NAME="Command" VALUE="ALink">
        <PARAM NAME="Text" VALUE="Text:関連項目">
        <PARAM NAME="Flags" VALUE=",,1">
        <PARAM NAME="Item1" VALUE="">
        <PARAM NAME="Item2" VALUE="vamthAddC">
    </OBJECT>
    
[/code]

こちらをネットで検索したところ、`HTML Help
Workshop`にて挿入される[ActiveXを使用するリンク](https://msdn.microsoft.com/en-
us/library/windows/desktop/ms644643\(v=vs.85\).aspx)であり`HTML形式`と互換性がありませんでした。

そこで、`OBJECT`タグを自前でパースし、`HTML`形式のリンクに置換しようと考えたのですが、肝心のリンク先が確認できませんでした。

上記の`OBJECT`タグの場合、文字列 `"vamthAddC"`
が関係しているように思えますが、そのようなHTMLファイル及び、文字列を含むファイルは存在しませんでした。

念のため、`hh.exe`での展開以外にも`HTML Help
Workshop`や`7-Zip`での展開も試しましたが生成されるHTMLファイルに差異は認められませんでした。

加えて`CHMLib`のソースコードも確認を行いましたが`hh.exe`と同等程度であり、`OBJECT`タグの処理は行われておりませんでした。

長々とした質問になってしまいましたが上記問題の対処方法をご存知の方はおられるでしょうか？

以上、よろしくお願いいたします。


CC BY-SA 3.0
2015-09-05T17:30:31.273
16294
2015-10-11T13:58:15.947
2015-09-06T01:47:48.127
question
html
Windowsヘルプ形式（.CHM）からHTMLファイルを取得する方法について


解決策ではないのですが、調査の参考になればと思って書いています。

ご質問のタグは確かにHTMLにActiveXを埋め込んだものです。

だとすると、このタグが何を指すか調査する場合

> CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"

の部分をまずレジストリエディタで検索します。この場合「adb880a6-d8ff-11cf-9377-00aa003b7a11」の部分を検索することになりますが、私の環境ではヒットしたのがHKEY_CLASSES_ROOT\CLSID{ADB880A6-D8FF-11CF-9377-00AA003B7A11}というキーで、これは「HHCtrl
Object」という文字列が設定されていました。

直接は知らないのですが、名前からおそらくHTML Help Workshop
向けのコントロールオブジェクトとして登録されているActiveXモジュールで、ヘルプではボタンだとか、リンクだとかの機能を受け持つ部品だと思います。

次に

>
[code]

>     <PARAM NAME="Command" VALUE="ALink">
>     <PARAM NAME="Text" VALUE="Text:関連項目">
>     <PARAM NAME="Flags" VALUE=",,1">
>     <PARAM NAME="Item1" VALUE="">
>     <PARAM NAME="Item2" VALUE="vamthAddC">
>  
[/code]

の部分は、このActiveXオブジェクトが受け取るパラメータを意味します。それぞれ名前から推測すると、"Comand"が機能でアンカー(リンク)を指定、”Text"が表示する文字列を指定、あとの"Flags","Item1","Item2"でなにがしかの情報を指定しています。

ただ、追えるのはここまでで、おそらくItem2の値"vamthAddC"が関連項目の実体を指し示す何かではないかと思いますが、レジストリエディタでも、この値を持っている項目は見つかりませんでした。ActiveX内部で解釈される情報なのだと思います。

と、こんな風に調べていくしかないと思いますが、あとは上記のタグと必要最小限のタグを書いたHTMLファイルを作って、それをInternet
Explorerで表示した際に現れるActiveXオブジェクトを実際に操作してみて何か情報となるものがないか調べる、という地道な作業をすることになると思います。

以上、ご参考まで。


CC BY-SA 3.0
2015-09-11T12:36:14.107
16524
2015-09-11T12:36:14.107
9515
16294
answer