【发布时间】: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,'','');只要基本过程完成,该文件就会被锁定。但是,此文件应在处理后删除。
知道问题出在哪里吗?
【问题讨论】:
-
您正在以错误的顺序完成
oMSG和oConfig。可能没有任何区别。 -
试图改变顺序,不影响
-
使用 CreateMHTMLBody 需要 URL,如果是本地的,请确保以 file:/// 开头
-
为什么要在直播中调用
Cancel? -
真的没有这个前缀('file:///')我在这一天被杀0_O。现在原始页面已正确删除
标签: delphi blocking mhtml imessage