【问题标题】:Create *. Mht-file (Web Archive)创建 *。 Mht 文件(网络存档)
【发布时间】:2012-09-23 07:24:56
【问题描述】:

使用以下函数表示从本地 html 文件生成 Web 存档

function TLessonConstructor2.CreateMHT( const FileName : string):boolean ;
 var
  oMSG:IMessage;
  oConfig: IConfiguration;
  sFileName: string;
  Stream: _Stream;
begin
  //CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
  //CoInitialize(nil);
  try
    Result  := false;
    sFileName := ChangeFileExt(FileName, '.mht');
    DeleteFile(PAnsiChar(sFileName));
    try
    oConfig := CoConfiguration.Create();
    oMSG    := CoMessage.Create();
    oMSG.Configuration := oConfig;
    oMSG.CreateMHTMLBody(FileName,CdoSuppressNone,'','');
    Stream:=oMSG.GetStream;
    Stream.SaveToFile(sFileName,adSaveCreateOverWrite);
    Stream.Cancel;
    Stream.Close;
    Result := True;
    except
      on E: Exception do
      begin
       Result  := false;
       MessageDlg(E.Message, mtError, [mbOK], 0);
      end;
    end;
  finally
  //  CoUnInitialize;
    Stream:=nil;
    oConfig:=nil;
    oMSG:=nil;
  end;
end;

文件名 - html 的完整路径。

执行后oMSG.CreateMHTMLBody(FileName, CdoSuppressNone,'','');只要基本过程完成,该文件就会被锁定。但是,此文件应在处理后删除。

知道问题出在哪里吗?

【问题讨论】:

  • 您正在以错误的顺序完成 oMSGoConfig。可能没有任何区别。
  • 试图改变顺序,不影响
  • 使用 CreateMHTMLBody 需要 URL,如果是本地的,请确保以 file:/// 开头
  • 为什么要在直播中调用Cancel
  • 真的没有这个前缀('file:///')我在这一天被杀0_O。现在原始页面已正确删除

标签: delphi blocking mhtml imessage


【解决方案1】:

CreateMHTMLBody 需要 URL,因此对于本地文件,请确保以 file:/// 开头

CreateMHTMLBody(const URL: WideString; Flags: CdoMHTMLFlags;
                          常量用户名:宽字符串;常量密码:WideString);安全呼叫;

【讨论】:

  • uses CDO_TLB, ADODB_TLB; _Stream 在 ADODB_TLB 单元(活动数据对象)中定义。 CDO_TLB 单元(协作数据对象)中的 IMessage、IConfiguration。如果尚未创建,请按如下方式使用导入类型库并创建:CDO_TLB = C:\WINDOWS\system32\cdosys.dll ADO_TLB = C:\Program Files\Common Files\System\ado\msadoxx.dll - xx 版本号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多