我依照http://blog.csdn.net/qsdnet/archive/2006/01/19/584402.aspx里面的文章把代码
拷到DELPHI7工程去,代码如下:use CDO_TLB, ADODB_TLB;//(要加入cdosys.dll才有这两单元,文章里有方法)procedure TForm1.WB_SaveAs_MHT(WB: TWebBrowser; FileName: TFileName);
var
Msg: IMessage;
Conf: IConfiguration;
Stream: _Stream;
URL : widestring;
s1,s2: WideString;
begin
if not Assigned(WB.Document) then Exit;
URL := WB.LocationURL; Msg := CoMessage.Create;
Conf := CoConfiguration.Create;
try
Msg.Configuration := Conf;
s1 := '';
s2 := '';
Msg.CreateMHTMLBody(URL, cdoSuppressAll, s1, s2);
Stream := Msg.GetStream;
Stream.SaveToFile(FileName, adSaveCreateOverWrite);
finally
Msg := nil;
Conf := nil;
Stream := nil;
end;end;编译可以正常通过,但运行到(下面的url="http://www.g.cn")
Msg.CreateMHTMLBody(URL, cdoSuppressAll, '', '')就会报"UnKnown Error"错误,
在网上查了好多的资料都没解决,所引用的单元CDO_TLB里有句话:
// DepndLst:
// (1) v2.0 stdole, (C:\WINNT\system32\stdole2.tlb)
// (2) v2.5 ADODB, (C:\Program Files\Common Files\System\ado\msado25.tlb)这两个文件系统里都有,我也拷到程序的目录中去了,用RegSvr32 注册也注册不了.
查了MSDN(http://msdn.microsoft.com/en-us/library/ms527024(EXCHG.10).aspx)
里的CreateMHTMLBody接口,有下面两句:
' Reference to Microsoft ActiveX Data Objects 2.5 Library
' Reference to Microsoft CDO for Windows 2000 Library
这两个类库应该要怎么注册呢或缺少什么?系统中我已注册的DLL:
regsvr32 C:\WINNT\system32\cdosys.dll
regsvr32 C:\Program Files\Common Files\System\ado\msado15.dll (这文件要是不
注册,delphi7引入cdosys.dll,点"Create unit"会报错)请大家帮忙看下这个问题应该如何解决,先谢谢啦.弄了两天头都搞大了.如果可以解决,我会加分的。
拷到DELPHI7工程去,代码如下:use CDO_TLB, ADODB_TLB;//(要加入cdosys.dll才有这两单元,文章里有方法)procedure TForm1.WB_SaveAs_MHT(WB: TWebBrowser; FileName: TFileName);
var
Msg: IMessage;
Conf: IConfiguration;
Stream: _Stream;
URL : widestring;
s1,s2: WideString;
begin
if not Assigned(WB.Document) then Exit;
URL := WB.LocationURL; Msg := CoMessage.Create;
Conf := CoConfiguration.Create;
try
Msg.Configuration := Conf;
s1 := '';
s2 := '';
Msg.CreateMHTMLBody(URL, cdoSuppressAll, s1, s2);
Stream := Msg.GetStream;
Stream.SaveToFile(FileName, adSaveCreateOverWrite);
finally
Msg := nil;
Conf := nil;
Stream := nil;
end;end;编译可以正常通过,但运行到(下面的url="http://www.g.cn")
Msg.CreateMHTMLBody(URL, cdoSuppressAll, '', '')就会报"UnKnown Error"错误,
在网上查了好多的资料都没解决,所引用的单元CDO_TLB里有句话:
// DepndLst:
// (1) v2.0 stdole, (C:\WINNT\system32\stdole2.tlb)
// (2) v2.5 ADODB, (C:\Program Files\Common Files\System\ado\msado25.tlb)这两个文件系统里都有,我也拷到程序的目录中去了,用RegSvr32 注册也注册不了.
查了MSDN(http://msdn.microsoft.com/en-us/library/ms527024(EXCHG.10).aspx)
里的CreateMHTMLBody接口,有下面两句:
' Reference to Microsoft ActiveX Data Objects 2.5 Library
' Reference to Microsoft CDO for Windows 2000 Library
这两个类库应该要怎么注册呢或缺少什么?系统中我已注册的DLL:
regsvr32 C:\WINNT\system32\cdosys.dll
regsvr32 C:\Program Files\Common Files\System\ado\msado15.dll (这文件要是不
注册,delphi7引入cdosys.dll,点"Create unit"会报错)请大家帮忙看下这个问题应该如何解决,先谢谢啦.弄了两天头都搞大了.如果可以解决,我会加分的。
解决方案 »
- 后缀为xpl的文件
- cxgrid的summary问题
- 如何在dbgrid的网格里插入一个按钮并响应事件?
- hongwei529 You's goods has recived.
- spcomm 用USB转串口接收不正常,拨号正常
- 关于INreaWeb的Sessions
- [一段精彩的网恋故事,转贴]我和网友的第一次亲密接触。。。
- HELP!...本人是中程,生活在一个买电脑的地狱,初来驾道,请多关照,问一个ADO的问题...
- 负载平衡问题,大师级人物请进来,入门者回避,送分!
- 很菜的问题-有关线程!
- html 转 mht 的问题。是否有方法可以设置 CdoMHTMLFlags 属性而不需要调用CreateMHTMLBody 函数
- 麻烦大家帮我看看,有关Emgu OpenCV的设置和安装的问题
function TDownHTML.HtmlSaveAsMHT(URL:string;FilePath:string;FileName:string):Integer;
var
msg:IMessage;
conf:IConfiguration;
stream:_Stream;
TempFileName,Ext: string;
TempFilePath: string;
begin
msg := CoMessage.Create;
conf := CoConfiguration.Create;
try
try
msg.Configuration :=conf;
//msg.CreateMHTMLBody(URL, cdoSuppressAll, '', '');
msg.CreateMHTMLBody(URL,cdoSuppressAll,'domain\username','password');
stream := msg.GetStream;
stream.SaveToFile(NormFileName(FilePath,FileName),adSaveCreateOverWrite);
Result:=1;
except
try //第一次出错,再尝试第二次保存
msg.CreateMHTMLBody(URL,cdoSuppressNone, '', '');
msg.GetStream.SaveToFile(NormFileName(FilePath,FileName),adSaveCreateOverWrite);
Result:=1;
except
SendErrToMemo('下载文件失败! URL:' + URL);
WriteLog('下载文件失败!' + TempFileName + '(' + URL + ')', LogFile);
Result:=0;
end;
end;
finally
msg := nil;
conf := nil;
stream := nil;
//web := nil;
end;
end;