在TWebBrowser中如何打开新页面

3
我创建了一个带有twebBrowser的应用程序。问题是当我点击某些链接时,比如在Gmail中,它会在我的默认浏览器(也就是IE)的新窗口中打开。我该如何让它像Firefox或Chrome等一样,在它们自己的窗口中打开所点击的链接。URL应该在TWebBrowser的窗口中打开。我需要在运行时创建一个包含TWebBrowser的新表单吗?不需要代码,只需要想法。
提前致谢。
附言:我的组织阻止Gmail、Facebook等网站。但是通过我的TWebBrowser,我可以打开它们。我的测试人员能在日志中看到吗?我的猜测是不能,因为那样他们会将其阻止。你对此有什么评论?

1
关于你的“PS”:你的网站很可能被网络层面阻挡,而不是应用层面;如果你默认的 IE 浏览器无法访问它们,那么你的 TWebBrowser 也将无法访问它们。更何况,TWebBrowser 其实就是一个 IE 窗口,所以它实际上同一个浏览器。 - Cosmin Prund
但是我的IE无法访问这些网站,而我的TWebBrowser可以。这就是我说的。 - CyprUS
是的,他们可以在日志中看到它。但是,如果他们使用IE选项而不是网络/路由器设置来阻止站点(否则我无法解释为什么您的TWebBrowser可以访问它们,因为正如@Cosmin所说,那实际上是一个IE窗口),您可能会(!)逃脱惩罚。然而,请问一下自己为什么您的组织要屏蔽这些网站(人们花太多时间在上面了吗?)以及试图挫败公司政策是否明智。 - Marjan Venema
@marjan:有时候人们需要访问'外部'网站,因为他们也有公司之外的生活。我并不打算在这些网站上浪费时间,但有时或许会使用一下 :) - CyprUS
3
@sunandan:我并没有说你在这些网站上花太多时间,而是说其他人这样做可能是被封锁的原因,你需要问问自己是否明智地尝试规避公司政策。 - Marjan Venema
1个回答

5

TWebBrowser有一个OnNewWindow2事件。假设持有TWebBrowser的窗体名为Form1,而Web控件本身名为WebBrowser1,请编写如下处理程序:

procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
var NF: TForm1;
begin
  NF := TForm1.Create(Application);
  NF.Visible := True;
  NF.WebBrowser1.RegisterAsBrowser;
  ppDisp := NF.WebBrowser1.DefaultInterface;
end;

当“点击”应导致新窗口时,这将创建一个新窗口,并带有新的TWebBrowser


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接