48

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

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

4

7 回答 7

33

2021 年 1 月更新:WebView2 已发布。这可以将基于 Chromium 的 Edge 集成为 Web 控件。不幸的是,它使用起来要复杂得多,但功能要强大得多。适用于 WinForms 或 WPF 或 C++ 应用程序。 https://docs.microsoft.com/en-us/microsoft-edge/webview2/

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

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

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

于 2017-07-26T17:13:24.140 回答
25

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

于 2015-08-16T11:46:32.063 回答
17

更新正如@MartinKasztantowicz 的回答中所述,截至目前(2016 年 2 月中旬),没有已知的方法可以加载真正的Edge 渲染引擎。下面将控件设置为报告新的用户代理,但使用旧引擎进行渲染。尽管如此,它还是很有用的,例如说服网站关闭已弃用的 IE hack。

每个应用程序的浏览器版本由注册表项System.Windows.Forms.WebBrowser控制。如果您的用户使用的是 Windows 10,您可以通过添加以下键来告诉控件加载假Edge:

  • 对于 64 位应用程序,仅 32 位 Windows 或当前用户:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1分别[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:

在此处输入图像描述

于 2015-08-02T16:41:10.093 回答
12

每个人都忘记了 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);
}

不要误会我的意思,它很hacky,但它确实有效。

反正微软现在做了这样的功能

于 2018-06-02T22:37:00.917 回答
8

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

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

也有它的API 文档

于 2018-10-31T18:39:04.370 回答
5

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

于 2020-07-14T13:43:06.637 回答
1

使用使用嵌入式 WebKit 引擎的 JavaFX。或者如果你被困在 .NET 中,那么https://www.teamdev.com/dotnetbrowser

于 2018-01-23T20:13:59.397 回答