如何能够将TWebBrowser当前浏览的网页保存为MHT格式的文件,条件是不能有保存对话框弹出;如何才能取出当前保存好的MHT格式的完整原码

解决方案 »

  1.   

    这个东西我以前down的, 没测试过.
    CDO_TLB, ADODB_TLB太大, 应该从import type lib可以直接得到(Microsoft xxx), 如果弄不到, 留个email.unit SaveMHT;interface
    uses
      CDO_TLB, ADODB_TLB, Classes, SysUtils, ActiveX;procedure SaveToMHT(const URL, DestFileName: string);// This should be used when you have already set the threading model to multithreaded
    procedure SaveToMHT_InCOThread(const URL, DestFileName: string);implementationprocedure SaveToMHT(const URL, DestFileName: string);
    var
      Msg: IMessage;
      Conf: IConfiguration;
      Stream : _Stream;
    begin
      Msg := CoMessage.Create;
      Conf := CoConfiguration.Create;
      Msg.Configuration := Conf;
      Msg.CreateMHTMLBody(URL, cdoSuppressNone, '', '');
      Stream := Msg.GetStream;
      Stream.SaveToFile(DestFileName, adSaveCreateOverWrite);
    end;type
      TCOMInitNullThread = class(TThread)
      protected
        FPage, FFile: string;
        Ex: Exception;
        procedure Execute; override;
      end;procedure SaveToMHT_InCOThread(const URL, DestFileName: string);
    begin
      with TCOMInitNullThread.Create(True) do
      try
        FPage:= URL;
        FFile:= DestFileName;
        Resume;
        WaitFor;
        if Ex <> nil then
          raise Ex;
      finally
        Free;
      end;
    end;{ TCOMInitNullThread }procedure TCOMInitNullThread.Execute;
    begin
      CoInitialize(nil);
      try
        SaveToMHT(FPage, FFile);
      except
        on E:Exception do
        begin
          Ex:= E.ClassType.Create as Exception;
          Ex.Message:= E.Message;
        end;
      end;
      CoUninitialize;
    end;end.
      

  2.   

    http://community.csdn.net/Expert/topic/2858/2858195.xml?temp=.2524378借花献佛 (~_~)
      

  3.   

    edguo() 您好:CDO_TLB, ADODB_TLB这两个东西我找不到
      

  4.   

    project->import type lib
    可能是:
    microsoft CDO for Windows2000
    microsoft ADO Ext.
      

  5.   

    还有这个方法对用TWebBrowser打开的本地文件能够保存吗?
      

  6.   

    楼上的兄弟您好我假如我现在的本地HTML文件的内容如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <HTML><HEAD><TITLE>恒悦鬼使神差</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <META content="MSHTML 6.00.2800.1458" name=GENERATOR></HEAD>
    <BODY style="WORD-BREAK: break-all" bgColor=#808080>
    <P><IMG 
    src="D:\新建文件夹\MyDocument\My Pictures\照片\MyPO.jpg">dsffffffffffffffffffffffffffffffffff</P>
    <P>sdfffffffffffffffffffffffffffffffffffff<FONT 
    face=楷体_GB2312>dsfffffffffffffffffffffffffffffff<FONT size=7>d<FONT 
    color=#0000ff>sffffffffffffffffffff</FONT><STRONG><FONT 
    color=#0000ff>dfffffffffffffffffffffffffffffffffffffffffffffffffff</FONT>fffffffffdsfasdf<EM>sadfsadf<U>sdfsdfsdfdffff</U></EM></STRONG></FONT></FONT></P></BODY></HTML>
    用上面的方法保存为MHT格式的文件的内容如下:
    thread-index: AcSSVNSqbhF8FgGgRIigHZb79jZQ1g==
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0010_01C49297.E2D0ACA0"
    Content-Location: file:///E:/MyProgram/Mail/Mail/Temp/Temp/Temp.htm
    Content-Class: urn:content-classes:message
    Importance: normal
    Priority: normal
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441This is a multi-part message in MIME format.------=_NextPart_000_0010_01C49297.E2D0ACA0
    Content-Type: text/plain;
    charset="gb2312"
    Content-Transfer-Encoding: quoted-printable <D:\=D0=C2=BD=A8=CE=C4=BC=FE=BC=D0\MyDocument\My =
    Pictures\=D5=D5=C6=AC\MyPO.jpg>
    dsffffffffffffffffffffffffffffffffffsdfffffffffffffffffffffffffffffffffffffdsfffffffffffffffffffffffffffffff
    dsffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffff
    fffffffffffdsfasdfsadfsadfsdfsdfsdfdffff
    ------=_NextPart_000_0010_01C49297.E2D0ACA0
    Content-Type: text/html
    Content-Transfer-Encoding: 8bit<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <HTML><HEAD><TITLE>恒悦鬼使神差</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <META content="MSHTML 6.00.2800.1458" name=GENERATOR></HEAD>
    <BODY style="WORD-BREAK: break-all" bgColor=#808080>
    <P><IMG 
    src="D:\新建文件夹\MyDocument\My Pictures\照片\MyPO.jpg">dsffffffffffffffffffffffffffffffffff</P>
    <P>sdfffffffffffffffffffffffffffffffffffff<FONT 
    face=楷体_GB2312>dsfffffffffffffffffffffffffffffff<FONT size=7>d<FONT 
    color=#0000ff>sffffffffffffffffffff</FONT><STRONG><FONT 
    color=#0000ff>dfffffffffffffffffffffffffffffffffffffffffffffffffff</FONT>fffffffffdsfasdf<EM>sadfsadf<U>sdfsdfsdfdffff</U></EM></STRONG></FONT></FONT></P></BODY></HTML>------=_NextPart_000_0010_01C49297.E2D0ACA0--
    其中的图片并没有直接压入消息结构的附件中,而非本地文件却会压入,这是为什么呢?该如何处理呢?
      

  7.   

    补充一下,我是直接用
    procedure TForm1.SaveToMHT(const URL, DestFileName: string);
    var
      Msg: IMessage;
      Conf: IConfiguration;
      Stream : _Stream;
    begin
      Msg := CoMessage.Create;
      Conf := CoConfiguration.Create;
      Msg.Configuration := Conf;
      Msg.CreateMHTMLBody(URL, cdoSuppressNone, '', '');
      Stream := Msg.GetStream;
      Stream.SaveToFile(DestFileName, adSaveCreateOverWrite);
    end;
    这个方法保存的,没有用线程