反编译chm及电子书的程序很多,网上也有很多例子,这里介绍用.net来反编的简单过程,大家可以扩展
1
ITStorageWrapper storage
=
new
ITStorageWrapper(
@"
d:\help.chm
"
);
2
3
foreach
(IBaseStorageWrapper.FileObjects.FileObject fileObject
in
storage.foCollection)
4
{
5
if (fileObject.CanRead)
6
{
7
if (fileObject.FileName.EndsWith(".htm"))
8
{
9
MessageBox.Show("Path: " + fileObject.FileName);
10
fileObject.Save(@"d:\" + fileObject.FileName);
11
}
12
}
13
}

2

3

4



5

6



7

8



9

10

11

12

13

当然,也可以将图片、脚本、样式表之类的一并导出来。
这里的IStorageWrapper其实是封装了Ole32.dll的StgOpenStorage,有兴趣的可以阅读微软的结构化存储(Structured Storage)
dll下载:
/Files/JohnXP/RelatedObjects.Storage.rar