将新Microsoft Edge添加到Web浏览器控件?

Nic*_*ico 39 c# webkit webbrowser-control windows-10 microsoft-edge

带有Microsoft Edge的新Windows 10已经到货.我想问你,我怎样才能将它添加到我的网页浏览器控件中?我需要它,因为实际的Web浏览器控件不允许JavaScript和CSS3.

我曾经也使用WebKit和Awesomium项目添加Chrome浏览器,但他们不记得登录凭据(我的应用程序需要它们)所以我不得不使用IE浏览器.

Gar*_*rey 26

更新2018年5月:最终微软让它变得简单. https://blogs.windows.com/msedgedev/2018/05/09/modern-webview-winforms-wpf-apps/

目前,新控件位于Windows Community Toolkit 3.0中,并包含在Toolkit.Win32.UI.Controls.dll中,您可能需要手动添加引用.

======我希望有人提到过这个,所以我会添加它,因为它看起来不像webbrowser控件会更新.

请改用WebView控件.这使用EdgeHTML渲染引擎.这是WindowPresentation图层的一部分但它可以从WinForms链接,也可能是其他应用程序. 您必须转换为UWP应用程序

import Windows.UI.Xaml.Controls.WebView
Run Code Online (Sandbox Code Playgroud)

示例代码:https://code.msdn.microsoft.com/windowsapps/XAML-WebView-control-sample-58ad63f7

我还没有用WebView替换我的WebBrowser,但界面看起来很熟悉.

  • 再次更新-现在可用于WinForms,WPF和UWP的单独的NuGet软件包(Microsoft.Toolkit.Forms.UI.Controls.WebView,Microsoft.Toolkit.Wpf.UI.Controls.WebView,Microsoft.Toolkit.Uwp.UI。 Controls.WebView) (4认同)
  • 好吧,我想这毕竟需要UWP.我以为我读过一种在桌面应用程序中使用这些控件的方法,但显然这是一厢情愿的想法. (3认同)
  • @DanielP 关于 WebView2 的一切都困难得多。我不确定您是否可以完全禁用打印。它在一个单独的进程中运行 chromium,最初不可能拦截 Ctrl-P,但我认为现在可以了。 (3认同)
  • 刚刚花了两天时间没有成功地将我们的类库中的 WebBrowser 替换为 WebView2,我认为后者有点像狗。由于嵌入问题,更加复杂、繁琐和脆弱,甚至可能无法(对我们来说)使用。直言不讳,我讨厌它。 (2认同)

小智 24

不幸的是,似乎目前无法在不使用第三方插件的情况下在MS webbrowser控件中使用Edge.虽然建议的"解决方案"将dword:00002ee1添加到FEATURE_BROWSER_EMULATION会导致webbrowser(错误地)将Edge/12.9200_AGENT报告为USER_AGENT,但事实上它仍然使用Trident引擎来呈现Web内容.因此,似乎微软计划在Web浏览器控件中支持Edge,但没有完成,忘记取出相应的Emulation键.您可以通过浏览http://html5test.com/来验证这一点,其中webbrowser控件得分在342到347分之间(与IE11相同),而Edge得分为397分.

  • 我在这个位置的Edge反馈网站上提出了一个错误https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7749954/ + 1它可能有助于加速边缘浏览器控件 (3认同)

Car*_*Dev 14

更新如@MartinKasztantowicz的回答所述,截至目前(2016年2月中旬),没有已知的方法来加载真正的 Edge渲染引擎.以下设置控件以报告新用户代理,使用旧引擎进行渲染.然而,对于例如说服站点关闭弃用的IE黑客而言,它是有用的.

浏览器版本由注册表项按应用System.Windows.Forms.WebBrowser程序控制.如果您的用户使用的是Windows 10,则可以通过添加以下密钥告诉控件加载边缘:

  • 对于64位应用程序,32位仅[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1分别为Windows或当前用户:[HKEY_CURRENT_USER\...]
  • 对于64位计算机上的32位应用程序(仅适用于整机): [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1

有关更多信息和值,请查看相应的Microsoft文档

我刚测试,得到以下结果...不知道是否有任何值也报告Windows 10:

在此输入图像描述


San*_*arn 8

大家都忘记了Windows API库吗?要嵌入任何窗口,您只需要组合MoveWindowSetParent.要隐藏标题栏,您可以使用SetWindowLong,如果您需要隐藏窗口周围的其他部分(例如地址栏),您可以轻松使用HwndHost.

C++嵌入记事本的示例:

HWND Window = FindWindow("Notepad", "Untitled - Notepad");
if (Window != nullptr)
{
    SetParent(Window, hwnd);
    SetWindowPos(Window, nullptr, 0, 0, 0, 0, SWP_NOSIZE);
    RedrawWindow(Window, nullptr, nullptr, RDW_INVALIDATE);
    ShowWindow(Window, SW_SHOW);
}
Run Code Online (Sandbox Code Playgroud)

不要误会我的意思,这很糟糕,但确实有效.

无论如何,微软现在已经制作了这样一个功能


Ale*_*ett 7

说这是不可能的旧答案现在已经过时了。

微软最近发布了他们基于 Microsoft Edge 的网络浏览器控件版本。他们称它为“Webview”,用于 WPF 和 Winforms。这是他们的官方公告,其中包含 2018 年 4 月来自 Windows 博客的一些入门信息。

还有它的API 文档


小智 5

对于完整的 Edge Chromium 支持,截至本说明,WebView2 控件似乎是 Microsoft 的最新产品。
https://docs.microsoft.com/en-us/microsoft-edge/webview2/