using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms;
namespace MSDNOUT { /// /// 反编译微软MSDN2003文档并保存到数据库的程序主窗体 /// public class dlgMSDNOut : System.Windows.Forms.Form { /******************************************************************************************
声明:本程序只是研究性的程序,没有损害微软对MSDN的版权的意图,并承认 微软对 MSDN , Microsoft Help 2.0 SDK , HXS文件格式,MSDE 等版权所有权
本程序能反编译微软MSDN2003的帮助文档,并将反编译结果保存到一个SQLSERVER数据库中 本文件为一个独立的C#代码文件,不需要依赖任何其他文件,使用VS.NET建立一个 C#的默认名称空间为MSDNOUT的Windows应用程序后将该文件内容覆盖掉系统自动生成 的Form1.cs文件内容即可编译通过并执行,本程序在微软.NET框架1.1简体中文版的 Windows2000Server环境下测试通过, MDAC版本2.7,数据库服务器为MSDE,版本8.00.760(SP3) 本程序假定你将MSDN2003安装在 C:\Program Files\MSDN\2003FEB\2052 还假定安装了 Microsoft Help 2.0 SDK , 并假定安装在目录 "C:\Program Files\Microsoft Help 2.0 SDK" , 该SDK安装文件可在微软网站下载
本程序长时间频繁的读写临时文件,因此可以使用一个虚拟硬盘工具在 物理内存中虚拟一个磁盘,这样可以大大加快程序的运行速度 可在 http://down1.tech.sina.com.cn/cgi-bin/download/download.cgi?s_id=3761&num=1 下载一个虚拟硬盘工具 程序使用的数据库为MSSQLSERVER,在此使用了MSDE,由于MSDE的单个数据库 大小限制在2GB内,而MSDN文件总共超过了2GB,因此程序运行时还根据需要 切换数据库,本程序使用的数据库文件保存在 f:\db 下面 使用前请执行以下SQL语句来初始化数据库
CREATE DATABASE MSDN1 ON (NAME = ’MSDN1’, FILENAME = ’f:\db\MSDN1.mdf’ )";
CREATE TABLE [MSDNFileList] ( [MFileID] [int] NOT NULL , [MFileName] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL , [MDBName] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [MFileLength] [int] NULL , CONSTRAINT [PK_MSDNFileList] PRIMARY KEY CLUSTERED ( [MFileName] ) ON [PRIMARY] ) ON [PRIMARY] GO
CREATE TABLE [MSDNFile] ( [MFileID] [int] NOT NULL , [MFileContent] [image] NULL , CONSTRAINT [PK_MSDNFile] PRIMARY KEY CLUSTERED ( [MFileID] |