我希望通过点击在一个TWebBrowser中的网页链接(弹出新窗口的那种链接)或者右键选择“在新窗口打开”以后,能够不弹出外部IE的窗口,而是在程序中显示该弹出页面。现在,如何获得弹出新窗口的地址这个问题仍然没能解决,请详细解答一下,多谢了。(刚刚接触Delphi,用词不正确请谅解 :))

解决方案 »

  1.   

    1. TWebBrowser.BeforeNavigate2  可以帮您获得浏览新页面的事件。2.这段代码何以帮你取当前运行的IE的一些信息。
    uses
      DDEMan;procedure TForm1.Button1Click(Sender: TObject);
    var
      DDE: TDdeClientConv;
    begin
      DDE := TDdeClientConv.Create(self);
      if DDE.SetLink( 'Iexplore', 'WWW_GetWindowInfo' ) then
        Caption:= DDE.RequestData( '0xFFFFFFFF, sURL, sTitle' )
      else
        ShowMessage( 'IE没有运行!' );
      DDE.Free;
    end;3.还有可以参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=823001
      捕获所有浏览事件
      

  2.   

    还是不能解决。
    我查看了Delphi的帮助,里面提到了一个IDispatch类型的ppDisp参数,它会有选择的返回一个新创建的、隐藏的充当新窗口的TWebBrowser组件,请问如何通过操作这个参数获得新窗口的URL或者其他关于新窗口的信息?
    另外,我已经在OnNewWindow2事件里面加入了Cancel := TRUE,用来防止由IE来打开新窗口而不是设想的用程序来打开。
    请继续给予帮助,谢谢
      

  3.   

    在程序中加入另一TWebBrowser为WebBrowser2
    TWebBrowser.BeforeNavigate2 
    事件中加入:   ppDisp:=WebBrowser2.Application;然后再去WebBrowser2完成你想要的操作