如何通过EmbeddedWB强制每个链接打开到新的IE窗口?

时间:2015-03-23 13:49:28

标签: delphi internet-explorer winapi

是否可以将所有网页链接更改为打开到新的IE窗口而不是在EmbeddedWB内?

我希望有一个类似的行为,就像您在EmbeddedWB中右键单击超链接并选择上下文菜单选项OPEN IN NEW WINDOW一样。 IE本身在EmbeddedWb之外打开。

是否可以通过OnBeforeNavigate2执行此操作而不执行IE作为新进程,我想使用相同的进程。  将IE打开到同一过程的原因是我希望cookie等能够正常运行。

2 个答案:

答案 0 :(得分:0)

所以你想在你的应用程序中实现多窗口浏览吗?

为了做到这一点,你可以在其上动态创建一个带有TWebBrowser组件的新窗口(一个表单),然后将TWebBrowser导航到特定页面而不是点击所在页面。

或者也许创建一种选项卡式界面,其中每个选项卡上都有自己的TWebBrowser组件实例。

或许您甚至想在自己的应用程序的新实例中显示它。在这种情况下,您需要开发您的应用程序,以便它可以接受额外的启动参数,该参数将告诉它应该在启动时导航到哪个网页。

简而言之,每次需要创建一个TWebBrowser组件的新实例时。是的OnBeforeNavigate2事件是正确的,因为你可以阻止原始的TWebBrowser导航到点击超链接点的页面。

答案 1 :(得分:0)

在OnBeforeNavigate2链接点击后,IE执行时似乎共享了cookie。

function ExecuteHtml(const URL :string): THandle;
var
  zURL, zParams, zDir: array[0..255] of Char;
  filename: string;
begin    
  Result := ShellExecute(Application.MainForm.Handle, 'open',
    pchar('Iexplore.exe'),StrPCopy(zURL, URL),
    StrPCopy(zDir, ''), SW_SHOWDEFAULT );

end;