如何通过 EmbeddedWB 强制每个 link 打开一个新的 IE Window?

How to Force each link to open into a new IE Window via EmbeddedWB?

是否可以将所有网页 link 更改为在新的 IE window 中打开而不是在 EmbeddedWB 中打开?

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

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

那么您想在您的应用程序中实现多window 浏览吗?

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

或者创建一种标签式界面,其中每个标签都有自己的 TWebBrowser 组件实例。

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

总之每次你都需要创建一个新的TWebBrowser组件实例。是的,OnBeforeNavigate2 事件适用于此,因为您可以阻止原始 TWebBrowser 导航到单击超链接点的页面。

link点击 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;