4

関数の次の表現を使用して、ローカル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;

FileName -htmlへのフルパス。

oMSG.CreateMHTMLBody(FileName、CdoSuppressNone、''、'')を実行した後; このファイルは、基本的なプロセスが完了する限りロックされます。ただし、このファイルは処理後に削除する必要があります。

問題が何であるかについて何か考えはありますか?

4

1 に答える 1

3

CreateMHTMLBody には URL が必要なので、ローカル ファイルの場合は前に必ずfile:///

CreateMHTMLBody(const URL: WideString; Flags: CdoMHTMLFlags; 
                          const UserName: WideString; const Password: WideString); safecall;
于 2012-10-02T20:45:55.660 に答える