用更好的浏览器替代.NET WebBrowser控件,如Chrome?

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

据我所知, WebBrowser控件是IE的包装,除了它看起来是一个非常旧的IE版本之外,这不会成为问题,所有这一切都需要通过CSS拧紧,潜在的安全性风险(如果渲染引擎没有打补丁,我真的可以期望缓冲区溢出问题得到解决吗?)和其他问题。

我正在使用Visual Studio C#(快速版 - 它在这里有什么区别?)

我想在我的应用程序中集成好的网络浏览器。 在某些情况下,我只是用它来处理用户注册过程,与我的网站的某些功能以及其他顺序相关的接口,但我有另一个应用程序,需要更多的错误控制。

我需要:

  • 一个可以集成到我的应用程序窗口中的浏览器(不是单独的窗口)
  • 与任何现代浏览器相媲美,对CSS,js和其他网络技术的良好支持
  • 基本的浏览器功能,如“导航”,“后退”,“重新加载”......
  • 自由访问页面代码和输出。
  • 我一直在考虑Chrome,因为它属于BSD许可证,但我会对最近的IE版本感到满意。

    尽可能地,我想保持简单。 最好的情况是,如果可以修补现有的WebBrowser控件,该控件已经达到我需要的70%左右,但我认为这是不可能的。

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

    我乐于接受建议


    Checkout CefSharp .Net绑定,我开始的一个项目,很幸运地得到社区的欢迎,变成了一些美好的东西。

    该项目包装Chromium嵌入式框架,并已用于多个主要项目,包括Rdio的Windows客户端,Windows Messenger的Facebook Messenger和Windows的Github。

    它具有用于WPF和Winforms的浏览器控件,并具有大量功能和扩展点。 基于Chromium,它的速度也很快。

    从NuGet中获取: Install-Package CefSharp.WpfInstall-Package CefSharp.WinForms

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

    BSD授权


    如果你不知道,Chrome会使用Webkit的一个分支,Safari也会使用它。 以下是几个同样重要的问题:

  • 用C#嵌入Webkit
  • 用C#嵌入Gecko(Firefox引擎)
  • Webkit的一个并不好,因为其他答案指出,一个版本不再有效(谷歌代码),而Mono则是实验性的。 如果有人努力为它制作一个体面的.NET包装器,但它不是任何人似乎都想做的事 - 这是令人惊讶的,因为它现在支持HTML5和IE(8 )引擎缺乏。

    更新(2014年)

    有一个新的双重许可项目,允许您将Chrome嵌入到名为Awesomium的.NET应用程序中。 它带有一个.NET api,但需要很多黑客进行渲染(这些示例将浏览器窗口绘制到缓冲区,将缓冲区绘制为图像并在定时器上刷新)。

    我认为这是Origin在战地3中使用的浏览器。

    更新(2016)

    现在有了DotnetBrowser,这是Awesomium的一个商业替代品。 它基于Chromium。


    我已经测试了C#Web浏览器组件的替代品几天了,这里是我的列表:

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

    Web浏览器组件是IE7而不是IE8? 如何改变这一点?

    优点:

  • 运行它并不需要太多的工作
  • IE9支持一些HTML5 / CSS3,IE10支持
  • 缺点:

  • 目标机器必须安装有目标IE版本,IE10仍然在Win7上预览
  • 这不需要太多的工作,你可以得到一些HTML5和CSS3的支持,虽然IE9缺乏一些最好的CSS3和HTML5功能。 但我相信你可以让IE10以同样的方式运行。 问题在于目标系统必须安装IE10,而且由于Windows 7仍然处于预览状态,所以我会提出反对意见。

    2. OpenWebKitSharp

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

    优点:

  • 积极开发
  • HTML5 / CSS3支持
  • 缺点:

  • 许多功能没有实现
  • 不支持x64(应用程序必须为x86构建)
  • OpenWebKit是相当不错的,虽然许多功能还没有实现,但我在Visual Studio中使用它时遇到了一些问题,它在此处引发null对象引用,然后在设计模式中使用它,但有一些问题。 每个使用它的人都会立即注意到js alert没有任何作用。 像mouseup,mousedown等事件不起作用,js拖放是越野车等。

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

    3. GeckoFX

    优点:

  • 适用于单声道
  • 积极开发
  • HTML5 / CSS3支持
  • 缺点:

  • D̶o̶e̶s̶n̶'̶t̶支持X64̶(APP必须建立用于x86)̶ - 见下面的意见
  • GeckoFX是一个跨平台的Webrowser控件,用于嵌入到WinForms应用程序中。 这可以在Windows上使用.NET,在Linux上使用mono。 Gecko是Firefox使用的布局引擎。

    我遇到了一些GeckoFX没有被积极开发的信息,这当然是Firefox的一两个版本,但这是正常的,我对活动和控件本身印象深刻。 它做我需要的一切,但我需要一些时间让它运行,这里有一个小教程让它运行:

  • 下载GeckoFx-Windows-16.0-0.2,在这里你可以检查是否有更新的GeckoFX
  • 添加对两个下载的DLL的引用
  • 由于GeckoFX是包装器,因此您需要XulRunner,请转至版本列表以查看您需要的版本
  • 现在,我们知道我们需要它的XULrunner版本,我们去Mozilla的XULRunner的版本中,去版本的文件夹 - >运行时间 - > xulrunner-(your_version).EN-US.win32.zip,在我们的例子XULRunner的,16.0.en- US.win32.zip
  • 解压所有文件并将所有文件复制到bin Debug(或者如果您的项目设置为发布,则发布)
  • 去你的窗体的视觉工作室设计师,进入工具箱,右键单击里面 - >选择项目 - >浏览 - >查找下载的GeckoFX winforms dll文件 - >确定
  • 现在你应该有新的控制GeckoWebBrowser
  • 如果你真的必须使用Chrome浏览器,看看这个名为Awesomium的产品,它对非商业项目是免费的,但许可证是几千美元的商业。

    链接地址: http://www.djcxy.com/p/21413.html

    上一篇: Replacing .NET WebBrowser control with a better browser, like Chrome?

    下一篇: How to get the URL of the current page in C#