it-swarm.com.ru

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

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

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

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

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

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

37
Ziv

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

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

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

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

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

15
chillitom

Мне повезло, используя GeckoFX в приложении C # win. Вот статья Getting Started , которая объясняет, какие зависимости вам нужно установить, чтобы запустить и запустить.

5
tbreffni

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

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

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

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

Фрагмент кода ниже демонстрирует, как создать 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

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

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

2
Vladimir

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

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

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

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

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

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 не стремится исправлять ошибки в ближайшее время.

2
r3st0r3

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

1
mikel

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

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

0
ManAmongHippos

Я нашел некоторую коллекцию часто задаваемых вопросов по этой теме на http://www.syncfusion.com/faq/windowsforms/faq_c100c.aspx

но я не пробовал себя.

0
Alexey Zimarev

См. http://code.google.com/p/chromiumembedded/ project, в котором представлена ​​структура для встраивания браузера Chromium (WebKit) в различные структуры пользовательского интерфейса.

Существует ссылка на реализацию .NET/Mono https://bitbucket.org/xilium/xilium.cefglue

0
Alex Burtsev