C#WPF WebBrowser替代方案

时间:2010-10-22 22:59:39

标签: c# wpf webkit browser

我需要在我的.NET 3.5应用程序中使用Web浏览器,而且我不想使用默认的webbrowser(因为它感觉越来越慢)。我尝试了克里斯卡瓦纳的铬,但我无法让它起作用......有没有更容易使用的替代品?我正在寻找计算机上非常简单和轻巧的东西,如果重要的话,它将主持一个网店前面。

更新: 5年后,又出现了需求。那时候我使用Awesomium来显示我的程序中的Web浏览器,tbh,我不记得它是怎么回事,但我也不记得这是一个真正的痛苦。

今天,我想再次使用它,我看到代码已经关闭,现在已经商业化了。我们尝试了,遇到了障碍,无法改变代码以我们想要的方式工作所以我们使用CEFCefSharp进入开源路由,能够看到代码使得工作如此之多更容易和更少的伏都教(ffs,awesomium甚至混淆了他们的代码,所以我无法理解我做错了什么。)

基本上Awesomium很酷,如果你想支付2900美元并且不需要屏幕外渲染,但CEF更强大,可以根据你的需要更改代码。

PS。我们给了CefGlue一个5分钟的尝试,它没有立即工作所以我们转移到CefSharp立即工作,这是两个竞争的开源框架的伟大和可怕的事情。

8 个答案:

答案 0 :(得分:16)

结帐我的新项目:https://github.com/chillitom/CefSharp

这将Chromium Embedded Framework带到了.Net / C#。有关源代码,二进制文件和示例,请参阅Github页面。

特点:

  • 带导航命令的浏览器控件
  • INotifyPropertyChanged events
  • ExecuteJavascript
  • 注册您自己的方案/协议处理程序
  • 拦截资源下载
  • 将CLR对象绑定到Chromium的JavaScript上下文中。

它仍处于前alpha阶段,因此所有反馈都得到了赞赏。

答案 1 :(得分:5)

我在C#win表单应用程序中使用GeckoFX很幸运。这是getting started article,它解释了为了启动和运行而需要安装的依赖项。

答案 2 :(得分:2)

如果您使用的是Windows窗体,则使用内置的WebBrowser控件会更容易。如果您也使用WPF,可以使用WPF中的WebBrowser控件。但是,WPF和WinForms的行为是不同的。

在WPF中,每个像素的呈现方式与WinForms中的不同。您可以使用此方法在WebBrowser 控件上显示内容:

http://karlshifflett.wordpress.com/2009/06/13/wpf-float-buttons-over-web-browser-control/

但是,如果要创建自定义窗口并在透明窗口上显示 WebBrowser控件,则它甚至不显示WebBrowser控件。有一些解决方法,但大多数都很复杂。地狱,甚至建议在WinForms背后绘制一个假的WPF UI。耦合不良的代码和更多的sphagetti。

我一直在尝试这一整天。这些都是我收集的所有资源。接下来的任务是编译它们,并了解事物。这让你和我在同一条船上。

WPF WebBrowser (3.5 SP1) Always on top - other suggestion to display HTML in WPF

http://blogs.msdn.com/b/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx

http://msdn.microsoft.com/en-us/library/ms742522.aspx

http://www.neowin.net/forum/topic/646970-c%23-wpf-window-with-transparency-makes-windowsformshost-disappear/

目前,我放弃了WebBrowser控件,并且正在进行Awesomium项目。试图让它工作是另一个麻烦,因为代码分布在不同的.NET版本上。如果您有任何运气,请在此分享。

您还可以看到此项目,以便更轻松地使用Web浏览器控件。

http://www.khrona.com/products/awesomium/

再一次,WinForms对WebBrowser控件没有任何问题,WPF有无数的问题,而MS并不热衷于更快地修补它。

答案 3 :(得分:2)

查看DotNetBrowser库。它提供了基于Chromium的WPF和WinForms浏览器控件,它们很容易嵌入到.NET应用程序中。它支持所有现代Web标准,包括HTML5,CSS3和JavaScript。呈现的页面与Google Chrome中的内容完全相同。

该库继承了Chromium的多进程架构 - 每个网页都在一个单独的Chromium进程中呈现,即使在插件崩溃或网页上发生任何其他意外错误之后,应用程序仍将继续工作。

以下是DotNetBrowser提供的一些其他有用功能:可以监听加载事件,处理网络活动,配置代理,模拟用户操作,使用cookie,访问和修改DOM,监听DOM事件,调用JavaScript从.NET开始,反之亦然,在网页上使用网络摄像头和麦克风,设置基于WebRTC的通信,以及more

查看API Reference了解详情。

下面的代码片段演示了如何创建BrowserView,将其嵌入到表单中,以及如何加载URL:

using System.Windows.Forms;
using DotNetBrowser;
using DotNetBrowser.WinForms;

namespace WinForms.DotNetBrowser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BrowserView browserView = new WinFormsBrowserView();
            Controls.Add((Control) browserView);
            browserView.Browser.LoadURL("http://www.youtube.com");
        }
    }
}

运行上面的示例后,您将获得以下输出:

enter image description here

图书馆是商业图书馆,但它可以在开源和学术项目中免费使用。商业许可证包括针对不同团队规模的支持包。也可以购买图书馆的源代码。

除了自己的页面外,该组件在Visual Studio Marketplace中以NuGet packageVSIX package的形式提供。

答案 4 :(得分:1)

我不确定有多少替代品,http://webkitdotnet.sourceforge.net/是一个。我认为这是一个WinForms控件,而不是WPF控件,所以它可能需要一些跳过箍来使其工作。

答案 5 :(得分:0)

我在这个主题上找到了一些常见问题集 http://www.syncfusion.com/faq/windowsforms/faq_c100c.aspx

但我没有试过自己。

答案 6 :(得分:0)

我相信您可以将Gecko Web引擎嵌入为COM对象,并将其用作标准.NET控件。 (Firefox使用Gecko)

试试此链接:https://developer.mozilla.org/en/Gecko

答案 7 :(得分:0)

请参阅http://code.google.com/p/chromiumembedded/项目,该项目提供了在不同UI框架中嵌入Chromium Browser(WebKit)的框架。

有一个指向.NET / Mono实现的链接https://bitbucket.org/xilium/xilium.cefglue