我用WebBrowser打开页面 New.htm
WebBrowser.Navigate('New.htm');
网页脚本如下:
<html>
<head>
<title>测试点击</title>
</head>
<body scroll="no"> 
<a href="http://www.baidu.com/">百度</a>
<a href="http://www.sina.com/">新浪</a>
</body>
</html> 
捣鼓了半天,没有找到当前打开的"超连接"的URL是哪个?
因为这些连接都是IE新开的窗口WebBrowser好象没有动静..........

解决方案 »

  1.   

    BeforeNavigate2传值
        
      procedure   TForm1.WebBrowser1BeforeNavigate2(Sender:   TObject;   
          const   pDisp:   IDispatch;   var   URL,   Flags,   TargetFrameName,   PostData,   
          Headers:   OleVariant;   var   Cancel:   WordBool);   
      begin   
          Caption   :=   URL   
      end;   
        
      procedure   TForm1.Button1Click(Sender:   TObject);   
      begin   
          WebBrowser1.Navigate(http://www.my.com/isis/a.htm?args=abc');   
      end;   
      
      

  2.   

      ShowMessage(WebBrowser1.LocationURL);//??
      

  3.   

    一楼正解,还有这个完成事件:
    void NavigateComplete2(      
        IDispatch *pDisp,
        VARIANT *URL                         // 取这个值
    );
      

  4.   

    脚本写错了,应该是下面的(弹出新的IE窗口)<html>
    <head>
    <title>测试点击</title>
    </head>
    <body scroll="no"> 
    <a href="http://www.baidu.com/" target=_blank>百度</a>
    <a href="http://www.google.com/" target=_blank>新浪</a>
    <a href="http://www.2ccc.com/" target=_blank>盒子</a>
    <a href="http://www.delphibbs.com/" target=_blank>大富翁</a>
    </body>
    </html> 此方法可以获取到当前页面打开的超连接.
    procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
      const Text: WideString);
    begin
      //Memo.Lines.Clear;
      Memo.Lines.Add(TimeToStr(Now())+' :打开超连接 URL:' + Text);
    end;
    遗憾的是,返回结果都是多条(我也不知道用户是否真的已经完全打开此连接)http://www.2ccc.com/
    11:38:47 :打开超连接 URL:
    11:38:48 :打开超连接 URL:http://www.2ccc.com/
    11:38:48 :打开超连接 URL:
    11:38:48 :打开超连接 URL:
    11:38:48 :打开超连接 URL:
    11:38:48 :打开超连接 URL:http://www.2ccc.com/
    11:38:56 :打开超连接 URL:
    11:38:56 :打开超连接 URL:
    11:39:01 :打开超连接 URL:
    11:39:01 :打开超连接 URL:http://www.2ccc.com/
    11:40:05 :打开超连接 URL:
    11:40:05 :打开超连接 URL:
    11:40:05 :打开超连接 URL:
    11:40:05 :打开超连接 URL:http://www.baidu.com/
    11:40:07 :打开超连接 URL:
    11:40:07 :打开超连接 URL:
    11:40:07 :打开超连接 URL:http://www.google.com/
    11:40:07 :打开超连接 URL:
    11:40:08 :打开超连接 URL:
    11:40:08 :打开超连接 URL:请教各位是否有更好办法,能获取到用户当前打开的超连接URL,并且知道此连接已经打开完成!
      

  5.   

    各位大哥,你们的方法好象都是WebBrowser1自己打开网页的地址吧?我的是新弹出页面的超连接呀:
    procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject; 
      const Text: WideString); 
    begin 
      //Memo.Lines.Clear; 
      Memo.Lines.Add(TimeToStr(Now())+' :打开超连接 URL:' + Text); 
    end; 
      

  6.   

    问题自己解决!(放出来或者对其他人有帮)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
      const Text: WideString);
    begin
      NewURL := text;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      WebBrowser1.Navigate(ExtractFilePath(ParamStr(0)) + 'New.htm');
    end;procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
      //Cancel := true;
      //WebBrowser1.Navigate(NewURL);
      //判断当前URL是否为自己需要的,然后操作!
      if NewURL = 'http://www.baidu.com/' then
        close;
    end;(很是郁闷:问过不少问题结果都是:1\自己最终解决;2\放了N天都没有正确答案.)
    (很是不解疑惑:1\这里没有多少愿意帮忙的好心人??  2\ 或许这里真的没有多少高手???   3\或许我的问题真的很有难度??)
      

  7.   

    主要是2和3吧……
    我很菜鸟,帮不了多少忙,高手们大多在工作,工作时间没法上CSDN,估计要被扣工资和奖金的
    还有,一个问题提出来别指望一两天有答案……hongqi都没来回答……