0

我有许多 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 文件。?

4

2 回答 2

1

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 上运行良好

于 2010-01-23T13:15:22.810 回答
0

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

于 2010-01-06T02:17:09.327 回答