我需要在我的.NET 3.5应用程序中使用Web浏览器,而且我不想使用默认的webbrowser(因为它感觉越来越慢)。我尝试了克里斯卡瓦纳的铬,但我无法让它起作用......有没有更容易使用的替代品?我正在寻找计算机上非常简单和轻巧的东西,如果重要的话,它将主持一个网店前面。
更新: 5年后,又出现了需求。那时候我使用Awesomium来显示我的程序中的Web浏览器,tbh,我不记得它是怎么回事,但我也不记得这是一个真正的痛苦。
今天,我想再次使用它,我看到代码已经关闭,现在已经商业化了。我们尝试了,遇到了障碍,无法改变代码以我们想要的方式工作所以我们使用CEF和CefSharp进入开源路由,能够看到代码使得工作如此之多更容易和更少的伏都教(ffs,awesomium甚至混淆了他们的代码,所以我无法理解我做错了什么。)
基本上Awesomium很酷,如果你想支付2900美元并且不需要屏幕外渲染,但CEF更强大,可以根据你的需要更改代码。
PS。我们给了CefGlue一个5分钟的尝试,它没有立即工作所以我们转移到CefSharp立即工作,这是两个竞争的开源框架的伟大和可怕的事情。
答案 0 :(得分:16)
结帐我的新项目:https://github.com/chillitom/CefSharp
这将Chromium Embedded Framework带到了.Net / C#。有关源代码,二进制文件和示例,请参阅Github页面。
特点:
它仍处于前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
目前,我放弃了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");
}
}
}
运行上面的示例后,您将获得以下输出:
图书馆是商业图书馆,但它可以在开源和学术项目中免费使用。商业许可证包括针对不同团队规模的支持包。也可以购买图书馆的源代码。
除了自己的页面外,该组件在Visual Studio Marketplace中以NuGet package和VSIX 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)
答案 7 :(得分:0)
请参阅http://code.google.com/p/chromiumembedded/项目,该项目提供了在不同UI框架中嵌入Chromium Browser(WebKit)的框架。
有一个指向.NET / Mono实现的链接https://bitbucket.org/xilium/xilium.cefglue