我(仍)使用Visual Studio 2005并希望在c#winforms应用程序中嵌入webkit浏览器,最好是作为winforms控件 .
我正在寻找一个简单的CefGlue或CefSharp示例,以及最少的必要dll . 我无法理解GitHub上的CefSharp示例 .
这很容易记录,但非常容易记录 .
为了使它工作,我创建了一个新的Forms应用程序并在我的表单中添加了一个toolstripContainer . 还在我的项目中添加了对CefSharp.dll和CefSharp.WinForms.dll的引用 .
这是我 class 的代码:
public partial class frmBrowser : Form, IRequestHandler { private readonly WebView web_view; public frmBrowser() { InitializeComponent(); web_view = new WebView("http://stackoverflow.com", new BrowserSettings()); web_view.Dock = DockStyle.Fill; web_view.RequestHandler = this; tsContainer.ContentPanel.Controls.Add(web_view); } #region IRequestHandler Members bool IRequestHandler.OnBeforeBrowse(IWebBrowser browser, IRequest request, NavigationType naigationvType, bool isRedirect) { System.Diagnostics.Debug.WriteLine("OnBeforeBrowse"); return false; } bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser, IRequestResponse requestResponse) { System.Diagnostics.Debug.WriteLine("OnBeforeResourceLoad"); IRequest request = requestResponse.Request; if (request.Url.EndsWith("header.png")) { MemoryStream stream = new System.IO.MemoryStream(); FileStream file = new FileStream(@"C:\tmp\header.png", FileMode.Open, FileAccess.Read, FileShare.Read); byte[] bytes = new byte[file.Length]; file.Read(bytes, 0, (int)file.Length); stream.Write(bytes, 0, (int)file.Length); file.Close(); requestResponse.RespondWith(stream, "image/png"); } return false; } void IRequestHandler.OnResourceResponse(IWebBrowser browser, string url, int status, string statusText, string mimeType, WebHeaderCollection headers) { System.Diagnostics.Debug.WriteLine("OnResourceResponse"); } #endregion }
具有请求处理程序的区域是可选的,这适用于您希望影响调用的时间 . 在我的示例中,我将对 Headers 图像的调用重新路由到我的驱动器上的图像 .
这就是你需要的代码 . 您还需要将以下文件添加到可执行文件的文件夹中:
avcodec-54.dll
avformat-54.dll
avutil-51.dll
chrome.pak
icudt.dll
libcef.dll
libEGL.dll
libGLESv2.dll
locales文件夹
其中一些文件是可选的,基于你想用它们做什么,但你可以google .
CefGlue(CEF1的过时版本)和Xilium.CefGlue(CEF3)已经包含演示应用程序 . Xilium.CefGlue包含两个演示应用程序 - 第一个(称为CefGlue.Demo在winforms上运行,在Linux上使用GtkSharp)和CefGlue.Client - 也是非常简单的winforms only demo . 所以CefGlue.Client已经拥有非常简单的winforms控件 .
UPD:针对.NET 2.0的Xilium.CefGlue程序集 . Xilium.CefGlue.Client针对.NET 3.5客户端配置文件 . 但一般情况下,它不使用任何3.5特定的,可以修复 . 但我建议使用最低的.NET 4.0运行时,因为它有更好的GC . 在 生产环境 中没有任何意义的安装2.0而不是4.0 .
2 回答
这很容易记录,但非常容易记录 .
为了使它工作,我创建了一个新的Forms应用程序并在我的表单中添加了一个toolstripContainer . 还在我的项目中添加了对CefSharp.dll和CefSharp.WinForms.dll的引用 .
这是我 class 的代码:
具有请求处理程序的区域是可选的,这适用于您希望影响调用的时间 . 在我的示例中,我将对 Headers 图像的调用重新路由到我的驱动器上的图像 .
这就是你需要的代码 . 您还需要将以下文件添加到可执行文件的文件夹中:
avcodec-54.dll
avformat-54.dll
avutil-51.dll
chrome.pak
icudt.dll
libcef.dll
libEGL.dll
libGLESv2.dll
locales文件夹
其中一些文件是可选的,基于你想用它们做什么,但你可以google .
CefGlue(CEF1的过时版本)和Xilium.CefGlue(CEF3)已经包含演示应用程序 . Xilium.CefGlue包含两个演示应用程序 - 第一个(称为CefGlue.Demo在winforms上运行,在Linux上使用GtkSharp)和CefGlue.Client - 也是非常简单的winforms only demo . 所以CefGlue.Client已经拥有非常简单的winforms控件 .
UPD:针对.NET 2.0的Xilium.CefGlue程序集 . Xilium.CefGlue.Client针对.NET 3.5客户端配置文件 . 但一般情况下,它不使用任何3.5特定的,可以修复 . 但我建议使用最低的.NET 4.0运行时,因为它有更好的GC . 在 生产环境 中没有任何意义的安装2.0而不是4.0 .