我正在处理使用System.Windows.Forms.WebBrowser的C# .NET应用程序。
由于IE无法正常响应,所以我想转换为Mozilla Firefox。
我该怎么做?
System.Windows.Forms.WebBrowser
是SHDocVw.WebBrowser的托管封装,但这个封装存在一些漏洞,可能无法提供所需的可扩展性。如果您有一个可行的解决方案,我不建议将其改为使用System.Windows.Forms.WebBrowser
。
IE不基于.Net,因此您无法使用System.Windows.Forms.WebBrowser
控制IE中的任何内容。事实上,我甚至不建议在.Net中连接BHO,因为只能在IE进程中运行一个CLR版本,而您的BHO可能会在意外的CLR版本上运行。
不确定是否可能或容易,但是Mono使用Gecko#来实现其版本的System.Windows.Forms.WebBrowser。也许您可以重用那个或从那段代码中提取一些可用部分?
使用System.Windows.Forms.WebBrowser控件无法实现此目标。似乎有一些方法可以将Gecko渲染引擎嵌入到WinForms应用程序中。
更新2016:
我可以建议三个仍在积极开发中的其他选项:
这是一个 .Net 组件,可用于将Chrome引擎集成到您的 .Net 应用程序中。基于CefGlue,但更新到最新的Chrome版本速度更快。此外,还提供了商业支持选项,对某些人可能会有所帮助。当然,组件本身是开源的。
另一个 .Net 组件,可用于将 Firefox 引擎 集成到您的 .Net 应用程序中。这是基于 Geckofx,但与 Geckofx 的当前版本不同,它可以与 Firefox 的正常发布版本一起使用。要使用 Geckofx,您需要自己构建 Firefox。同样,提供了商业支持,但组件本身完全是开源的。
需要在您的 .Net 应用程序中使用所有不同的浏览器吗?使用 BrowseEmAll Core API,您可以将Chrome、Firefox、Webkit 和 Internet Explorer集成到您的应用程序中。不过这是一个商业产品,所以请注意。
(完全透明:我为这家公司工作,所以请对我说的一切持保留态度)