Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 创建*。Mht文件(网络存档)_Delphi_Blocking_Mhtml_Imessage - Fatal编程技术网

Delphi 创建*。Mht文件(网络存档)

Delphi 创建*。Mht文件(网络存档),delphi,blocking,mhtml,imessage,Delphi,Blocking,Mhtml,Imessage,使用以下函数表示形式从本地html文件生成Web存档 function TLessonConstructor2.CreateMHT( const FileName : string):boolean ; var oMSG:IMessage; oConfig: IConfiguration; sFileName: string; Stream: _Stream; begin //CoInitializeEx(nil, COINIT_APARTMENTTHREADED);

使用以下函数表示形式从本地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(文件名,CdoSuppressNone,,'')后;只要基本过程完成,此文件就会被锁定。但是,处理后应删除此文件


知道问题出在哪里吗?

CreateMHTMLBody需要URL,因此对于本地文件,请确保前面有
文件:///

CreateMHTMLBody(const URL: WideString; Flags: CdoMHTMLFlags; const UserName: WideString; const Password: WideString); safecall;
CreateMHTMLBody(consturl:WideString;Flags:CdoMHTMLFlags; 常量用户名:WideString;常量密码:WideString);安全呼叫;
您正在以错误的顺序完成
oMSG
oConfig
。可能没有任何区别。尝试更改顺序时,不影响CreateMHTMLBody要求的URL,请确保如果是本地的,前面有file:///Why 您是否在流上调用
Cancel
?确实没有此前缀('file://')我在这一天被0\u O杀死。现在正确删除的原始页面
使用CDO\u TLB,ADODB_TLB\在ADODB\U TLB单元(活动数据对象)中定义的流。IMessage,CDO_TLB单元中的IConfigurationin(协作数据对象)。如果尚未创建,请按如下方式使用导入类型库并创建:
CDO\u TLB=C:\WINDOWS\system32\cdosys.dll
ADO\u TLB=C:\Program Files\Common Files\System\ADO\msadox.dll
-xx版本号