Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->编程语言 ->ASP.NET ->正文

C#反编译微软MSDN2003的帮助文档,并将反编译结果保存到一个SQLSERVER数据库中

来源:Linuxdby.com 作者:Webmaster 时间:2007-06-04 点击: [收藏] [投稿]

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace MSDNOUT
{
 /// <summary>
 /// 反编译微软MSDN2003文档并保存到数据库的程序主窗体
 /// </summary>
 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]
   )  ON [PRIMARY]
  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

   *****************************************************************************************/
  
  /// <summary>
  /// 取消操作标记
  /// </summary>
  private bool bolCancel  = false ;
  /// <summary>
  /// 暂停操作标记
  /// </summary>
  private bool bolPause = false ;
  /// <summary>
  /// 主数据库连接字符串
  /// </summary>
  private System.Data.SqlClient.SqlConnection MainConn = null;
  /// <summary>
  /// 文档数据库连接字符串
  /// </summary>
  private System.Data.SqlClient.SqlConnection DataConn = null;
  /// <summary>
  /// 插入文档列表的命令对象
  /// </summary>
  private System.Data.SqlClient.SqlCommand InsertNameCmd = null;
  /// <summary>
  /// 查询文档内容的命令对象
  /// </summary>
  private System.Data.SqlClient.SqlCommand InsertCmd = null;
  /// <summary>
  /// 保存文档数据的数据库名称
  /// </summary>
  private string CurrentDBName = "MSDN1" ;
  /// <summary>
  /// 进行数据处理的线程对象
  /// </summary>
  private System.Threading.Thread myThread = null;

  /// <summary>
  /// 初始化数据库连接
  /// </summary>
  private void InitDB()
  {
   if( MainConn != null)
   {
    MainConn.Dispose();
    DataConn.Dispose();
    InsertNameCmd.Dispose();
   }
   // 打开数据库连接
   MainConn = new System.Data.SqlClient.SqlConnection();

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:用C#开发.NET CF 蓝牙通信模块   下一篇:C#中实现DataGrid双向排序

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号