谁能真正的实现将htm另存为mht文件

        谁能真正的实现将htm另存为mht文件

本人的开发环境为D5。  
在搜索中找到以下几种实现的方法。  
1.来自ZSWang的  
http://expert.csdn.net/Expert/topic/2634/2634699.xml?temp=.6191217  

它解决了将图片的路径修正为全路径,但仍未能将图片打包到mht文件中。  
2.来自  oracle_lover(数据库情人)    
   http://expert.csdn.net/Expert/topic/2411/2411849.xml?temp=.5925714  
 代码如下:  
 var  
 tmpStrs:  TStrings;  
begin  
 tmpStrs:=TStringList.Create;  
 try  
   tmpStrs.LoadFromFile('C:\go.htm');  
   tmpStrs.SaveToFile('C:\go.mht');  
 finally  
   tmpStrs.Free;  
 end;  
end;  


根本就没有解决图片打包的问题。  

3.在D6,D7利用WebBrowser控件进行转化  
即webbrowser1.ExecWB(OLECMDID_SAVEAS,  OLECMDEXECOPT_DONTPROMPTUSER);  
但是如果遇到人家网页里加上代码:  
//禁止保存网页内容  
<noscript>  
<iframe  src="*.htm">  
</iframe>  
</noscript>  

则无法保存网页。  

========================  
请问谁能有更好的办法将htm另存为mht文件,将图片打包进mht文件,并没有WebBrower控件下。  


VC的代码,将就看吧  

回复人:  masterz(MS  MVP)  (  )  信誉:147    2002-6-7  17:42:45  得分:300        
#import  "c:\program  files\common  files\system\ado\msado15.dll"  no_namespace  rename("EOF",  "EndOfFile")  
#import  <cdosys.dll>  no_namespace  rename("EOF",  "EndOfFile")  

............  
void  CSavemhtDlg::OnOK()    
{  
           //  save  url  as  a  single  file,  in  fact  I  don't  know  if  it  is  mht  file,  but  it  can  be  opened  by  IE,  can  someone  tell  me?  
           CoInitialize(NULL);  
           {  
                       IMessagePtr              iMsg(__uuidof(Message));  
                       IConfigurationPtr  iConf(__uuidof(Configuration));  
                       iMsg->Configuration  =  iConf;  
                       try  
                       {  
                           iMsg->CreateMHTMLBody(  
                                                     "http://example.microsoft.com",    
                                                     cdoSuppressNone,  
                                                     "domain\\username",  
                                                     "password");  
                       }  
                       catch(_com_error  err)  
                       {  
                           //  handle  exception  
                       }              
                       _StreamPtr  pStream=iMsg->GetStream();  
                       pStream->SaveToFile("test.mht",adSaveCreateOverWrite);  
           }  
           CoUninitialize();  
}  

谢谢  jiangsheng(蒋晟.MSMVP2004Jan)    
原来是将cdoSuppressAll改为cdoSuppressNone就OK了,偶就是笨,试过cdoSuppressImages,就没有试其他了,看来下次要多试  哈哈  
vMessage.CreateMHTMLBody(mURL,  cdoSuppressNone,  '',  '');    

代码:  
procedure  SaveWholePage(mURL:  string;  mFileName:  TFileName);  
var  
   vMessage:  IMessage;  
   vConfiguration:  IConfiguration;  
   vStream:  _Stream;  
begin  
   vMessage  :=  CreateComObject(CLASS_Message)  as  IMessage;  
   vConfiguration  :=  CreateComObject(CLASS_Configuration)  as  IConfiguration;  
   try  
       vMessage.Configuration  :=  vConfiguration;  
       vMessage.CreateMHTMLBody(mURL,  cdoSuppressNone,  '',  '');    //此用将zswang的cdoSuppressAll改为cdoSuppressNone  
       vStream  :=  vMessage.GetStream;  
       vStream.SaveToFile(mFileName,  adSaveCreateOverWrite);  
   finally  
       vMessage  :=  nil;  
       vConfiguration  :=  nil;  
       vStream  :=  nil;  
   end;  
end;

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值