if ActiveWebBrowser.QueryStatusWB(OLECMDID_SAVEAS)=3 then
    ActiveWebBrowser.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT,EmptyParam,EmptyParam);
这样就弹出“另存为……”对话框,但我如何设定对话框的文件名呢?

解决方案 »

  1.   

    (OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT,EmptyParam,EmptyParam);
    最后那两个参数中的其中一个是用来设置默认名的,至于是那一个就忘记了,自己试
      

  2.   

    可是怎么写呢?ActiveWebBrowser.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT,EmptyParam,EmptyParam);
    EmptyParam必须是OleVariant类型的变量才行,
    ActiveWebBrowser.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT,'1.htm','2.htm');
    的话,连编译也通不过啊?
      

  3.   

    你就定义一个Variant变量试试啊
      

  4.   

    试了,不行:
    我这样用:
    EmptyParam:=OleVariant('C:\1.htm');
    ActiveWebBrowser.ExecWB(OLECMDID_SAVEAS,OLECMDEXECOPT_DODEFAULT,EmptyParam,EmptyParam);编译时没问题,执行时没起任何作用。
      

  5.   

    不用EmptyParam,一样也不行啊?
    procedure TfrmMain.ActSaveExecute(Sender: TObject);
    var
      ActiveWebBrowser: TWebBrowser;
      V1:OleVariant;
    begin
      ActiveWebBrowser:=GetActiveWebBrowser();
      V1:=OleVariant('C:\1.htm');
      if ActiveWebBrowser=nil then
         exit;
      if ActiveWebBrowser.QueryStatusWB(OLECMDID_SAVEAS)=3 then
        ActiveWebBrowser.ExecWB(OLECMDID_SAVEAS ,OLECMDEXECOPT_DODEFAULT,V1,V1);
    end;
      

  6.   

    如果你自己在MSDN里找过ExecWB这个方法,那么会找到微软说必须弹出另存对话框,目的是为了安全。也许在防范一些黑客之类的通过网页读写你的硬盘吧。所以答案是“不可能通过ExecWB方法实现”。如果想另存网页文本得调用一个什么接口忘了,就可以实现。
      

  7.   

    RA:man8888(北京男人)
    那么用接口可以怎么实现啊?
    能给出代码参考吗?
    还有,可不可以不弹出"另存为"对话框,而直接用程序实现保存网页啊?
      

  8.   

    http://www.pconline.com.cn/pcedu/empolder/gj/vb/0402/322509.html