【问题标题】:How to check if a subfile exists in a chm file?如何检查chm文件中是否存在子文件?
【发布时间】:2011-01-01 12:40:03
【问题描述】:

我有许多 CHM 文件,每个文件都是 5 个不同 Html 文件的压缩 html。我的意思是,假设我有 5 个不同的文件,分别命名为 Alpha、Beta、Gamma、Delta、Theta。 说,我将这 5 个压缩到一个 CHM 文件中。让我们将该文件称为 CompressedHtm.CHM。我有超过 500 个这些文件。 现在我想检查所有这些 > 500 个文件是否都有所有 5 个子文件(即 Alpha、Beta、Gamma、Delta、Theta)。有没有办法在 VC++ 6.0 /MFC 中检查,而不用反编译 CHM 文件。?

【问题讨论】:

    标签: mfc visual-c++ chm


    【解决方案1】:

    HTML 帮助使用 IE 进行显示。因此,您只需要使用网络浏览器导航到 mk:@MSITStore:c:\WINDOWS\Help\htmlhelp.chm::/apiref.htm 之类的 URL。如果文件不存在,您将收到带有 404 状态代码的 DWebBrowserEvents2::NavigateError。 请注意,您可能会在现代版本的 Windows 上遇到其他错误,因为 Microsoft 有 limited its usage due to security concerns

    【讨论】:

      【解决方案2】:

      Free Pascal 附带了一个完全独立 (*) 的命令行可执行 CHMLS,它允许列出 CHM 文件的内容。它存在于多个平台。

      您可以使用管道执行该操作,然后处理输出。

      几天前我碰巧为某人压缩了exe文件,你可以在这里找到它们 http://www.stack.nl/~marcov/chmls.zip

      (如果您不信任我,请下载 fpc 2.4.0 windows 版本)

      (*) 我不知道win9x上的状态。

      输出如下:

       <Section> <Offset> <UnCompSize>  <Name>
       0               0            0  /#ITBITS
       1        27737212       192334  /#STRINGS
       0              70          133  /#SYSTEM
       1        22414493       169080  /#TOCIDX
       1        26847375       339904  /#TOPICS
       1        27187279       294757  /#URLSTR
       1        27482036       255176  /#URLTBL
       1        27929546      1174749  /$FIftiMain
       1        22411742         2751  /$OBJINST
       0               0            0  /$WWKeywordLinks/
       1        24122411       628812  /$WWKeywordLinks/BTree
       1        24751223       111371  /$WWKeywordLinks/Data
       1        24862594         2378  /$WWKeywordLinks/Map
       1        24864972            1  /$WWKeywordLinks/Property
       0               0           70  /_#_README_#_
       0               0            0  /baseunix/
       1        10656150         1395  /baseunix/_stat_ver.html
       1        10651853         1438  /baseunix/_stat_ver_kernel.html
       1        10654717         1433  /baseunix/_stat_ver_linux.html
       1        10650407         1446  /baseunix/_stat_ver_linux_old.html
       1        10653291         1426  /baseunix/_stat_ver_svr4.html
       1        10452426         1438  /baseunix/arg_max.html
       1        10644473         1510  /baseunix/bitsinword.html
      

      以# 和$ 开头的文件是内部文件。

      (这些工具是 Free Pascal 的 CHM 库附带的工具,它支持 CHM 读/写支持,独立于 Free Pascals 文档和帮助系统的其他工具。它独立于操作系统,据我所知,它在 OS X/ 上运行良好PowerPC64

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-15
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        相关资源
        最近更新 更多