Подтвердить что ты не робот

Существуют ли образцы использования CefGlue или CefSharp в приложении Windows Forms с минимальной настройкой?

Я (по-прежнему) использую Visual Studio 2005 и хочу встроить браузер webkit в приложение winforms С#, предпочтительно как элемент winforms.

Я ищу простой пример CefGlue или CefSharp для начала работы вместе с минимально необходимыми DLL. Я не могу понять смысл образца CefSharp на GitHub.

4b9b3361

Ответ 1

Это довольно легко, но очень грустно документировано.

Чтобы заставить его работать, я создал новое приложение 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
}

Область с обработчиками запросов является необязательной, то есть, когда вы хотите влиять на вызовы. В моем примере я перенаправил вызов изображения заголовка на изображение на моем диске c.

Это то, что вам нужно для кода. Вам также необходимо добавить следующие файлы в папку исполняемого файла:

  • avcodec-54.dll
  • avformat-54.dll
  • avutil-51.dll
  • chrome.pak
  • icudt.dll
  • libcef.dll
  • libEGL.dll
  • libGLESv2.dll
  • папка локалей

Некоторые из этих файлов являются необязательными tho, основываясь на том, что вы хотите с ними делать, но вы можете это сделать Google.

Ответ 2

CefGlue (устаревшая версия для CEF1) и Xilium.CefGlue(CEF3) уже содержит демонстрационные приложения. Xilium.CefGlue содержит два демонстрационных приложения - сначала (называется CefGlue.Demo работает с окнами под winforms и использует GtkSharp on linux), а CefGlue.Client - также очень простая демонстрация winforms. Итак, у CefGlue.Client уже есть очень простой контроль winforms.

UPD: сборка Xilium.CefGlue, ориентированная на .NET 2.0. Xilium.CefGlue.Client предназначен для профиля клиента .NET 3.5. Но в целом он не использует никаких 3.5-специфических и может быть исправлен. Но я рекомендую использовать минимальную среду выполнения .NET 4.0, потому что у нее намного лучше GC. У него нет смысла устанавливать 2.0 вместо 4.0 при производстве.