是否有相对简单的方法将现代浏览器插入到。net应用程序中?

据我所知,WebBrowser控件是IE的包装器,这不会是一个问题,除了它看起来像一个非常旧的IE版本,所有这些都涉及CSS的混乱,潜在的安全风险(如果渲染引擎没有打补丁,我真的能指望无数的缓冲区溢出问题得到解决吗?)和其他问题。

我使用的是Visual Studio c#(快速版-在这里有什么不同吗?)

我想在我的应用程序中集成一个好的网络浏览器。在某些情况下,我只是用它来处理用户注册过程,界面与我的网站的一些功能和其他事情的顺序,但我有另一个应用程序在脑海中,将需要更多的错误…控制。

我需要:

一个可以集成到我的应用程序的一个窗口中的浏览器(不是一个单独的窗口) 对CSS, js和其他web技术的良好支持,与任何现代浏览器相当 基本的浏览器功能,如“导航”、“返回”、“重载”…… 自由访问页面代码和输出。

我在考虑Chrome,因为它是基于BSD许可的,但我也会同样喜欢最新版本的IE。

尽可能地,我想让事情简单化。最好的情况是,如果有人可以修补现有的WebBrowser控件,它已经做了我所需要的70%,但我不认为这是可能的。

我已经找到了一个Mozilla的activeX控件(http://www.iol.ie/~locka/mozilla/control.htm),但它看起来像是一个旧版本,所以它不一定是一个改进。

我愿意听取建议


当前回答

签出CefSharp . net绑定,这是我不久前开始的一个项目,幸运的是它得到了社区的支持,并变成了一些很棒的东西。

该项目包含了Chromium嵌入式框架,并已在许多主要项目中使用,包括Rdio的Windows客户端,Facebook Messenger for Windows和Github for Windows。

它为WPF和Winforms提供了浏览器控件,还有大量的特性和扩展点。基于铬,它的速度也非常快。

从NuGet: dotnet中添加CefSharp包。Wpf或dotnet添加包CefSharp。WinForms

查看例子并给出你的想法/反馈/拉请求:https://github.com/cefsharp/CefSharp

BSD Licensed

其他回答

2020年7月更新

基于Chromium的WebView 2由微软发布。现在,您可以将新的Chromium Edge浏览器嵌入到. net应用程序中。

2018年5月更新

如果您希望应用程序在Windows 10或更高版本上运行,那么现在可以使用Windows Community Toolkit将Edge浏览器嵌入到. net应用程序中。

WPF示例:

Install Windows Community Toolkit Nuget Package Install-Package Microsoft.Toolkit.Win32.UI.Controls XAML Code <Window x:Class="WebViewTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:WPF="clr-namespace:Microsoft.Toolkit.Win32.UI.Controls.WPF;assembly=Microsoft.Toolkit.Win32.UI.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WebViewTest" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="MainWindow" Width="800" Height="450" mc:Ignorable="d"> <Grid> <WPF:WebView x:Name="wvc" /> </Grid> </Window> CS Code: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // You can also use the Source property here or in the WPF designer wvc.Navigate(new Uri("https://www.microsoft.com")); } }

WinForms的例子:

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();

    // You can also use the Source property here or in the designer
    webView1.Navigate(new Uri("https://www.microsoft.com"));
  }
}

请参考此链接了解更多信息。

我知道这不是一个“替代”WebBrowser控件,但我有一些可怕的渲染问题,同时显示一个页面,使用BootStrap 3+布局等,然后我发现了一个帖子,建议我使用以下。显然,它是特定于IE的,并告诉它使用在客户端机器上找到的最新版本进行渲染(因此它不会使用IE7,我认为这是默认的)。

所以只要写:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

在文档头部的某个地方。

显然,如果它不是你的文档,这不会有帮助-尽管我个人认为这是一个安全漏洞,如果你阅读的页面不是通过WebBrowser控件创建的-为什么不使用web浏览器!

您可以使用注册表来设置IE版本的web浏览器控件。 转到:HKLM\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION并添加browser_emulation值的"yourApplicationName.exe" 要查看browser_emulation的值,请参考链接:http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation

最近几天,我一直在测试c# Web浏览器组件的替代品,以下是我的列表:

1. 使用较新的IE版本8,9:

Web浏览器组件是IE7不是IE8?如何改变这种状况?

优点:

运行它不需要太多工作 如果是IE9,支持一些HTML5/CSS3,如果是IE10,则完全支持

缺点:

目标机器必须安装IE版本,Win7上的IE10仍在预览中

这并不需要太多的工作,你可以得到一些HTML5和CSS3的支持,尽管IE9缺乏一些最好的CSS3和HTML5功能。但我相信你可以让IE10以同样的方式运行。问题是目标系统必须安装IE10,而由于IE10仍在Windows 7的预览版中,我建议不要这样做。

2. 开放网络工具包夏普

OpenWebKitSharp是一个基于webkit的webkit引擎的。net包装器。NET 0.5项目。WebKit是Chrome/Safari使用的布局引擎

优点:

积极发展 HTML5和CSS3支持

缺点:

许多特性没有实现 不支持x64(应用程序必须为x86构建)

OpenWebKit非常好,尽管许多功能还没有实现,我在visual studio中使用它时遇到了一些问题,它在这里抛出空对象引用,然后在设计模式下,有一些js问题。每个使用它的人几乎都会立即注意到js的alert没有做任何事情。鼠标向上,鼠标向下……等不工作,js拖放是bug等..

我也有一些困难安装它,因为它需要特定版本的VC可重分发安装,所以在异常之后,我查看了事件日志,找到了VC版本并安装了它。

3.GeckoFX

优点:

对单核细胞的研究 积极发展 HTML5和CSS3支持

缺点:

D̶o̶t e s̶̶n̶”̶̶̶s̶u p p̶̶̶o̶r t̶̶̶x̶6̶4̶̶(̶A p p̶̶̶̶m̶美国̶̶t̶̶b̶e̶̶b̶u̶i t̶l̶̶̶f̶o̶r̶̶x̶8̶6面的̶)̶-看到comments

GeckoFX是一个跨平台Webrowser控件,用于嵌入到WinForms应用程序中。这可以在Windows上与. net一起使用,在Linux上与mono一起使用。 Gecko是Firefox使用的布局引擎。

我偶然发现一些信息说GeckoFX不是主动开发的,这是不正确的,当然它总是比Firefox落后一两个版本,但这是正常的,我对它的活动和控件本身印象深刻。它做了我需要的一切,但我需要一些时间让它运行,这里有一个小教程让它运行:

Download GeckoFx-Windows-16.0-0.2, here you can check if newer is available GeckoFX Add references to two downloaded dll's Since GeckoFX is wrapper you need XulRunner, go to Version List to see which one you need Now that we know which version of XulRunner we need, we go to Mozilla XulRunner releases, go to version folder -> runtimes -> xulrunner-(your_version).en-US.win32.zip, in our case xulrunner-16.0.en-US.win32.zip Unzip everything and copy all files to your bin\Debug (or release if your project is set to release) Go to visual studio designer of your form, go to toolbox, right click inside -> Choose items -> Browse -> Find downloaded GeckoFX winforms dll file -> OK Now you should have new control GeckoWebBrowser

如果你真的必须使用Chrome,可以看看这个名为Awesomium的产品,它对非商业项目是免费的,但对商业项目的授权则需要几千美元。

Geckofx和Webkit.net一开始都很有前景,但它们分别没有跟上Firefox和Chrome的更新,而随着Internet Explorer的改进,Webbrowser控件也有所改进,尽管不管你有什么IE版本,默认情况下它都像IE7一样,但可以通过进入注册表并将其更改为允许HTML5的IE9来修复。