小弟想把WebBrowser中内容保存到一个mht文件中,网上的参考代码是:PHP 代码:
CDO.MessageClass msg=new CDO.MessageClass(); 
msg.CreateMHTMLBody(axWebBrowser1.LocationURL,CDO.CdoMHTMLFlags.cdoSuppressAll,"",""); 
ADODB.Stream s= msg.GetStream(); 
s.SaveToFile(@"d:\test.mht",ADODB.SaveOptionsEnum.adSaveCreateOverWrite);  
小弟在C#工程中引入CDO及ADODB1命名空间,将上面代码转换为C#代码: CDO.MessageClass msg = new CDO.MessageClass();
 ADODB.Stream stm = null;
                    
 try
 {
            msg.CreateMHTMLBody(WebBrowser.Url.ToString(), CDO.CdoMHTMLFlags.cdoSuppressAll, "", "");
            stm = msg.GetStream();
            stm.SaveToFile(FilePath, ADODB.SaveOptionsEnum.adSaveCreateOverWrite);
  }
  finally
  {
       stm.Close(); //未将对象引用设置到对象的实例  
  }
  但每次都是提示:System.NullReferenceException: 未将对象引用设置到对象的实例。
  一次次的失败让我失望至极,请教高手这是怎么回事啊?

解决方案 »

  1.   

    你先catch下msg.CreateMHTMLBody(WebBrowser.Url.ToString(), CDO.CdoMHTMLFlags.cdoSuppressAll, "", ""); 
     看是否已经创建成功????????????
      

  2.   

    感谢各位回贴,问题已解决,成功代码如下:        private void button1_Click(object sender, EventArgs e)
            {
                CDO.Message msg = new CDO.MessageClass();
                CDO.Configuration cfg = new CDO.ConfigurationClass();            msg.Configuration = cfg;
                msg.CreateMHTMLBody(@"http://www.sina.com.cn", CDO.CdoMHTMLFlags.cdoSuppressAll, "", "");
                msg.GetStream().SaveToFile("c:\\a.mht", ADODB.SaveOptionsEnum.adSaveCreateOverWrite);
                
            }
      

  3.   

    我这里依然不能执行,提示错误:
    类型“CDO.ConfigurationClass”未定义构造函数