如何在delphi中实现把网页完整保存到指定文件,类似于IE的另存为,但不弹出输入文件名对话框(50分)

  • 主题发起人 主题发起人 Konzi
  • 开始时间 开始时间
K

Konzi

Unregistered / Unconfirmed
GUEST, unregistred user!
我尝试用 WebBrowser1.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT, EmptyParam,EmptyParam);
来保存,可以保存。

但由于我的是后台程序,不能出现对话框,文件名由程序来指定。
查看了MSDN上面的资料,还是找不到可行的方法,各位大侠,请帮帮忙!
 
查看了MSDN的资料,说明如下:
命令格式:ExecWB(OLECMDID_SAVEAS,nCmdExecOpt , pvaIn,pvaOut );
参数如下:
This command displays a dialogue box if the nCmdExecOpt argument of IOleCommandTarget::Exec is set to MSOCMDEXECOPT_DODEFAULT, MSOCMDEXECOPT_PROMPTUSER, or NULL. It does not display a dialogue box if the argument is set to MSOCMDEXECOPT_DONTPROMPTUSER.

pvaIn VARIANT of type VT_BSTR that specifies the path and file name of the file to which to save the Web page. When the path contains more than one folder name, separate the folder names with two backward slashes (//).
pvaOut Set to NULL.

按照上面的说明,我下面的代码应该就不会弹出对话框了,但实际运行还是出现了,真头痛!
var
v: OleVariant ;
begin
v:='c://tt.htm';
WebBrowser1.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DONTPROMPTUSER,v,EmptyParam);
end;

有没有人帮帮我啊? 无助的我静静的等待着。。。。。
 
[:(] 高手们,帮帮忙吧
 
后来改为:
var
v: OleVariant ;
begin
v:='file:///c:/tt.htm';
WebBrowser1.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DONTPROMPTUSER,v,EmptyParam);
end;

对话框不出现了,但发生EOLEEXCEPTION:
Could not set colspan property. Invalid property value. Enter value between 1 and 1000
 
这跟在 OLECMDEXECOPT_DONTPROMPTUSER 方式下 在弹出的对话框中按CANCEL时的现象是一样的
 
估计是第三个参数不正确,不能正确传入文件名称产生的

改为 v:='c:/a.htm';时,从弹出的对话框可以看到路径已经转到c:,代输入的文件名也是A.HTM,点击确定可以正确保存
 
想直接调用ie来实现没戏,你可以分析html,把所有的url找出来,然后去cache里找。至于存成什么格式,就自己决定了,推荐使用ie的mht
 
后退
顶部