是否有相对简单的方法将现代浏览器插入到。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),但它看起来像是一个旧版本,所以它不一定是一个改进。
我愿意听取建议
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"));
}
}
请参考此链接了解更多信息。
签出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