C#编写chm查看器

我想用C#编写CHM查看器。 哪些资源/信息可以帮助我做到这一点?

我用C ++编写了一个chm viewer,作为SumatraPDF的一部分( http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html )。 它是开源的,因此您可以将代码移植到C#( http://code.google.com/p/sumatrapdf/ )。

chm阅读器只有几个部分:

  • 解析CHM文件格式,提取CHM文件中的* .html页面和其他文件。 在苏门答腊,我们使用CHMLib( http://www.jedrea.com/chmlib/ ),但还有其他库( http://bonedaddy.net/pabs3/code/#hhm
  • 显示.html页面,使用Web浏览器控件在C#/ .NET中非常容易
  • 您可能希望实现其他function,如目录。 目录需要解析出CHMindex文件并使用节点构建树视图(您可以查看http://code.google.com/p/sumatrapdf/source/browse/trunk/src/ChmEngine.cpp了解我们的工作方式它在苏门答腊岛)

这可能不会太困难。 你可以看看这个http://savannah.nongnu.org/projects/chmspec这是一个很好的猜测chm文件格式,因为微软从未发布过官方规范。 从表面上看,它基本上是一个压缩的html文件集合。 解压缩后,您可以在嵌入式浏览器控件中打开html文件。 普通的浏览器控件是基于IE的,但是正在进行创建chrome和firefox可嵌入控件的项目。