是否有任何使用CefGlue或CefSharp在Windows窗体应用程序中使用最少设置的样本?

Nig*_*gel 12 c# webkit winforms cefsharp

我(仍然)使用Visual Studio 2005并希望在ac#winforms应用程序中嵌入webkit浏览器,最好是作为winforms控件.

我正在寻找一个简单的CefGlue或CefSharp示例,以及最少的必要dll.我无法理解GitHub上的CefSharp示例.

And*_*ndy 14

这很容易记录,但非常容易记录.

为了使它工作,我创建了一个新的Forms应用程序并在我的表单中添加了一个toolstripContainer.还在我的项目中添加了对CefSharp.dll和CefSharp.WinForms.dll的引用.

这是我班上的代码:

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
}
Run Code Online (Sandbox Code Playgroud)

具有请求处理程序的区域是可选的,这适用于您希望影响调用的时间.在我的示例中,我将对标题图像的调用重新路由到我的驱动器上的图像.

这就是你需要的代码.您还需要将以下文件添加到可执行文件的文件夹中:

  • avcodec中-54.dll
  • avformat-54.dll
  • avutil-51.dll
  • chrome.pak
  • icudt.dll
  • libcef.dll
  • libEGL.dll
  • libGLESv2.dll
  • locales文件夹

其中一些文件是可选的,基于你想要用它们做什么,但你可以谷歌那.

  • 这次真是万分感谢!此外,如果您没有安装DirectX,如果您的运行时exe目录中有libEGL.dll和/或libGLESv2.dll,则会出现"d3dx9_43.dll缺失"错误,他们将尝试加载d3dx9_43.dll以启用WebGL内容.删除libEGL.dll和libGLESv2.dll修复了这个问题. (2认同)

Dmi*_*aev 5

CefGlue(CEF1的过时版本)和Xilium.CefGlue(CEF3)已经包含演示应用程序.Xilium.CefGlue包含两个演示应用程序 - 第一个(称为CefGlue.Demo在winforms下运行,在Linux上使用GtkSharp)和CefGlue.Client - 也是非常简单的winforms只有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.