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

Альтернатива С# WPF WebBrowser

Мне нужен веб-браузер внутри моего приложения .NET 3.5, и я не хочу использовать веб-браузер по умолчанию (потому что он чувствует себя глючным и медленным). Я пробовал Chris Cavanagh chromium, но я просто не мог заставить его работать... можно ли использовать альтернативы? Я ищу что-то очень простое и легкое на компьютере, оно будет располагать фронтом интернет-магазина, если это имеет значение.

ОБНОВЛЕНИЕ: Через 5 лет возникла необходимость. Тогда я использовал Awesomium, чтобы показать веб-браузер в моей программе, тбх, я не помню, как это произошло, но я также не знаю, Напомню, что это настоящая боль.

Сегодня, хотя я хотел использовать его снова, и я вижу, что код был закрыт, и теперь он коммерческий. Мы пробовали, преодолели препятствие, не смогли изменить код, чтобы работать так, как мы этого хотели, поэтому мы отправились с открытым исходным кодом с CEF и CefSharp, имея возможность увидеть код, сделавший работу намного проще и меньше voodoo (ffs, awesomium даже обфускает их код, чтобы я мог" я понимаю, что я делаю неправильно).

В принципе Awesomium классный, если вы хотите заплатить 2900 $и не нуждаетесь в рендеринге экрана, но CEF настолько мощнее, что может изменить код в соответствии с вашими потребностями.

PS. Мы дали CefGlue за 5 минут, это не сработало сразу, поэтому мы перешли на CefSharp, который сразу же работал, это великая и ужасная вещь о двух конкурирующих фреймах с открытым исходным кодом.

4b9b3361

Ответ 1

Оформить мой новый проект: https://github.com/chillitom/CefSharp

Это привнесет встроенную инфраструктуру Chromium в .Net/С#. См. Страницу Github для источников, двоичных файлов и примера.

Особенности:

  • элемент управления браузера с навигационными командами
  • События, связанные с INotifyPropertyChanged
  • ExecuteJavascript
  • Зарегистрируйте собственные обработчики схем/протоколов.
  • перехват загрузки ресурсов
  • привязать объекты CLR к контексту JavaScript Chromium.

Он все еще находится в предварительных альфа-стадиях, поэтому вся обратная связь оценивается.

Ответ 3

Если вы используете Windows Forms, проще со встроенным элементом управления WebBrowser. Если вы также используете WPF, отлично использовать элемент управления WebBrowser из WPF. Однако поведение WPF и WinForms различно.

В WPF каждый пиксель отображается иначе, чем в WinForms. Вы можете отобразить контент поверх элемента управления WebBrowser, используя этот метод:

http://karlshifflett.wordpress.com/2009/06/13/wpf-float-buttons-over-web-browser-control/

Однако, если вы хотите создать собственное окно и отобразить элемент WebBrowser над прозрачным окном, он даже не отображает элемент управления WebBrowser. Есть некоторые обходные пути, но большинство из них сложны. Черт, даже рекомендуется рисовать поддельный интерфейс WPF за WinForms. Плохосвязанные коды и более сфагетти.

Я пробовал это целый день. Это все ресурсы, которые я собрал на этом. Следующей задачей для вас является компиляция и понимание вещей. Это ставит вас на ту же лодку, что и я.

WPF WebBrowser (3.5 SP1) Всегда сверху - другое предложение отображать HTML в WPF

http://blogs.msdn.com/b/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx

http://msdn.microsoft.com/en-us/library/ms742522.aspx

http://www.neowin.net/forum/topic/646970-c%23-wpf-window-with-transparency-makes-windowsformshost-disappear/

В настоящее время я отказался от управления WebBrowser и собираюсь выполнить проект Awesomium. Попытка заставить его работать - это еще одна проблема, поскольку коды распространяются по разным версиям .NET. Если кому-то из вас повезло, пожалуйста, поделитесь им здесь.

Вы также можете увидеть этот проект для упрощения использования элементов управления для веб-браузеров.

http://www.khrona.com/products/awesomium/

Опять же, WinForms не имеет проблем с элементом управления WebBrowser, WPF имеет бесчисленное количество, и MS не стремится к исправлению ситуации раньше.

Ответ 4

Взгляните на библиотеку DotNetBrowser. Он предоставляет элементы управления браузером WPF и WinForms на основе Chromium, которые довольно легко встроить в приложение .NET. Он поддерживает все современные веб-стандарты, включая HTML5, CSS3 и JavaScript. Страница отображается так же, как в Google Chrome.

Библиотека наследует многопроцессную архитектуру Chromium - каждая веб-страница отображается в отдельном процессе Chromium, и приложение продолжает работать даже после сбоя плагина или любой другой непредвиденной ошибки на веб-странице.

Вот некоторые другие полезные функции, предоставляемые DotNetBrowser: есть возможность прослушивать события загрузки, обрабатывать сетевую активность, настраивать прокси, моделировать действия пользователя, работать с файлами cookie, получать доступ и изменять DOM, прослушивать события DOM, вызывать JavaScript из .NET и наоборот, используйте веб-камеру и микрофон на веб-странице, настройте обмен данными на основе WebRTC и многое другое.

Проверьте API Ссылка для более подробной информации.

Фрагмент кода ниже демонстрирует, как создать BrowserView, внедрить его в форму и загрузить URL:

using System.Windows.Forms;
using DotNetBrowser;
using DotNetBrowser.WinForms;

namespace WinForms.DotNetBrowser
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            BrowserView browserView = new WinFormsBrowserView();
            Controls.Add((Control) browserView);
            browserView.Browser.LoadURL("http://www.youtube.com");
        }
    }
}

Запустив приведенный выше пример, вы получите следующий вывод:

enter image description here

Библиотека коммерческая. Коммерческие лицензии включают пакеты поддержки для разных размеров команды. Также можно приобрести исходный код библиотеки.

Помимо собственной страницы, компонент доступен в виде пакета NuGet и пакета VSIX в Visual Studio Marketplace.

Ответ 5

Я не уверен, что есть много альтернатив, http://webkitdotnet.sourceforge.net/ - это хотя. Я думаю, что вместо WinForms, а не WPF, возможно, потребуется немного перепрыгнуть через обручи, чтобы заставить его работать.

Ответ 7

Я считаю, что вы можете встроить веб-движок Gecko в качестве COM-объекта и использовать его как стандартный элемент управления .NET. (Firefox использует Gecko)

Попробуйте эту ссылку: https://developer.mozilla.org/en/Gecko