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