Есть ли относительно простой способ вставить современный браузер в приложение .NET?
Насколько я понимаю, WebBrowser
элемент управления является оберткой для IE , которая не будет проблемой, за исключением того, что выглядит, как будто это очень старая версия IE , со всем, что влечет за собой проблемы с CSS, потенциальные риски безопасности (если механизм рендеринга не был исправлен, могу ли я ожидать, что проблемы переполнения буфера в zillion будут исправлены?) и другие проблемы.
Я использую Visual Studio C # (экспресс-издание - это имеет какое-то значение здесь?)
Я хотел бы интегрировать хороший веб-браузер в мои приложения. В некоторых я просто использую его для управления процессом регистрации пользователей, взаимодействия с некоторыми функциями моего веб-сайта и другими вещами этого порядка, но я имею в виду другое приложение, которое потребует большего ... контроля.
Я нуждаюсь:
- Браузер, который может интегрироваться в окне моего приложения (не в отдельном окне)
- Хорошая поддержка CSS, JS и других веб-технологий, наравне с любым современным браузером.
- Основные функции браузера, такие как «навигация», «возврат», «перезагрузка» ...
- Либеральный доступ к коду страницы и вывод.
Я думал о Chrome, поскольку он поставляется под лицензией BSD, но я был бы так же доволен последней версией IE.
Насколько это возможно, я бы хотел, чтобы все было просто. Лучше всего было бы, если бы можно было исправить существующий WebBrowser
элемент управления, который уже делает примерно 70% того, что мне нужно, но я не думаю, что это возможно.
Я нашел элемент управления ActiveX для Mozilla ( http://www.iol.ie/~locka/mozilla/control.htm ), но похоже, что это старая версия, поэтому это не обязательно улучшение.
Я открыт для предложений
источник
WebBrowser
элемент управления использует эмуляцию IE7, если не указано иное сFEATURE_BROWSER_EMULATION
. Это задокументировано здесь: blogs.msdn.com/b/askie/archive/2009/03/23/…Ответы:
Оформить заказ CefSharp .Net bindings, проект, который я начал некоторое время назад, который, к счастью, был подхвачен сообществом и превратился в нечто замечательное.
Проект охватывает Chromium Embedded Framework и использовался в ряде крупных проектов, включая Windows-клиент Rdio, Facebook Messenger для Windows и Github для Windows.
Он имеет элементы управления браузером для WPF и Winforms и имеет множество функций и точек расширения. Будучи основанным на Chromium, он невероятно быстр.
Возьмите его из NuGet:
Install-Package CefSharp.Wpf
илиInstall-Package CefSharp.WinForms
Ознакомьтесь с примерами и поделитесь своими мыслями / отзывами / pull-запросами: https://github.com/cefsharp/CefSharp
BSD Лицензированный
источник
Chrome использует (ответвление) Webkit, если вы не знали, что также используется Safari. Вот несколько вопросов того же рода:
Один веб-набор не так хорош, как говорится в другом ответе, одна версия больше не работает (одна из кодов Google), а Mono - экспериментальная. Было бы неплохо, если бы кто-то попытался создать для него достойную оболочку .NET, но это не то, что кому-то, похоже, захочется сделать - что удивительно, учитывая, что теперь он поддерживает HTML5 и так много других функций, что IE ) двигателя не хватает.
Обновление (2014)
Существует новый проект с двойной лицензией, который позволяет вам встраивать Chrome в ваши .NET-приложения под названием Awesomium . Он поставляется с .NET API, но требует немало хаков для рендеринга (примеры рисуют окно браузера в буфер, рисуют буфер как изображение и обновляют по таймеру).
Я думаю, что это браузер, используемый Origin в Battlefield 3.
Обновление (2016)
Теперь есть DotnetBrowser , коммерческая альтернатива Awesomium. Это основано на Хроме.
источник
В течение нескольких дней я тестировал альтернативы компоненту веб-браузера C #, и вот мой список:
1. Использование более новых версий IE 8,9:
Компонент веб-браузера IE7 не IE8? Как это изменить?
Плюсы:
Минусы:
Это не требует большой работы, и вы можете получить некоторую поддержку HTML5 и CSS3, хотя в IE9 отсутствуют некоторые из лучших функций CSS3 и HTML5. Но я уверен, что вы могли бы запустить IE10 таким же образом. Проблема заключается в том, что в целевой системе должен быть установлен IE10, и, поскольку в Windows 7 он все еще находится в режиме предварительного просмотра, я бы посоветовал против него.
2. OpenWebKitSharp
OpenWebKitSharp - это оболочка .net для движка webkit, основанная на проекте WebKit.NET 0.5. WebKit - это механизм разметки, используемый Chrome / Safari
Плюсы:
Минусы:
OpenWebKit довольно приятный, хотя многие функции еще не реализованы, я столкнулся с несколькими проблемами при использовании его в Visual Studio, которая выбрасывает здесь нулевую ссылку на объект, а затем в режиме разработки возникают некоторые проблемы с js. Все, кто его использует, почти сразу заметят, что js alert ничего не делает. Такие события, как mouseup, mousedown ... и т. Д. Не работают, js drag and drop содержит ошибки и т. Д.
У меня также были некоторые трудности с его установкой, так как для этого требуется установленная версия распространяемого VC, поэтому после исключения я посмотрел журнал событий, нашел версию VC и установил ее.
3. GeckoFX
Плюсы:
Минусы:
GeckoFX - это кроссплатформенный веб-браузер для встраивания в приложения WinForms. Это можно использовать с .NET в Windows и с моно в Linux. Gecko - это механизм разметки, используемый Firefox.
Я наткнулся на немного информации о том, что GeckoFX активно не разрабатывается, что не соответствует действительности, конечно, это всегда одна или две версии Firefox, но это нормально, меня по-настоящему впечатлила активность и сам элемент управления. Он делает все, что мне нужно, но мне нужно было некоторое время, чтобы запустить его, вот небольшое руководство, чтобы запустить его:
Если вы действительно должны использовать Chrome, взгляните на этот продукт под названием Awesomium , он бесплатен для некоммерческих проектов, но лицензия для коммерческих целей составляет несколько тысяч долларов.
источник
У меня была та же проблема, WebBrowser использовал старую версию IE, с некоторым гуглом я наткнулся на следующий код, который вносит изменения в реестр и позволяет WebBrowser использовать самую последнюю версию IE:
Вам просто нужно создать класс и поместить в него этот код, а затем запустить следующий код при запуске программы:
VB.NET:
Вы можете использовать это как:
источник
Вы можете использовать реестр, чтобы установить версию IE для управления веб-браузером. Перейдите по адресу: HKLM \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION и добавьте «yourApplicationName.exe» со значением browser_emulation. Чтобы увидеть значение browser_emulation, перейдите по ссылке: http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation
источник
Взгляните на элемент управления Mono.WebBrowser - он встраивает либо Gecko (как используется Firefox), либо WebKit (как используется Safari) в WinForms (без использования ActiveX).
источник
Я знаю, что это не «заменяющий» элемент управления WebBrowser, но у меня были некоторые ужасные проблемы с рендерингом при отображении страницы, на которой использовался BootStrap 3+ для макета и т. Д., А затем я нашел сообщение, в котором предлагалось использовать следующее. По-видимому, он специфичен для IE и говорит ему использовать для рендеринга последний вариант, найденный на клиентском компьютере (поэтому он не будет использовать IE7, как я считаю, по умолчанию)
Так что просто поставьте:
где-то в головной части вашего документа.
Если, конечно, это не ваш документ, то это, очевидно, не поможет (хотя я лично считаю, что это дыра в безопасности, если вы читаете страницы, созданные не вами самими через элемент управления веб-браузера - почему бы просто не использовать веб-браузер!)
Удачи.
источник
<head>
, поставить его в качестве самого первого ребенка<head>
. Нам потребовалось некоторое время, чтобы понять это.<meta>
качестве первого потомка<head>
, он будет работать в режиме совместимости, а не в пограничном режиме.Взгляните на библиотеку DotNetBrowser . Он предоставляет элементы управления браузером WPF и WinForms на основе Chromium, которые довольно легко встроить в приложение .NET. Он поддерживает все современные веб-стандарты, включая HTML5, CSS3 и JavaScript. Страница отображается точно так же, как в Google Chrome.
Библиотека наследует многопроцессную архитектуру Chromium - каждая веб-страница отображается в отдельном процессе Chromium, и приложение продолжает работать даже после сбоя плагина или любой другой непредвиденной ошибки на веб-странице.
Вот некоторые другие полезные функции, предоставляемые DotNetBrowser: есть возможность прослушивать события загрузки, обрабатывать сетевую активность, настраивать прокси, моделировать действия пользователя, работать с файлами cookie, получать доступ и изменять DOM, прослушивать события DOM, вызывать JavaScript из .NET и наоборот, используйте веб-камеру и микрофон на веб-странице, настройте обмен данными на основе WebRTC и многое другое .
Проверьте API Reference для более подробной информации.
Фрагмент кода ниже демонстрирует, как создать BrowserView, внедрить его в форму и загрузить URL:
Запустив приведенный выше пример, вы получите следующий вывод:
Библиотека является коммерческой. Коммерческие лицензии включают пакеты поддержки для разных размеров команды. Также можно приобрести исходный код библиотеки.
Помимо своей собственной страницы компонент доступен в виде пакета NuGet и , как VSIX пакет в Visual Studio Marketplace.
источник
Я попробовал несколько вариантов Webkit, но по моему опыту ничто не сравнится с достижениями OpenWebkitSharp . Любите это любите это .. Оценки HTML5 и CSS3 настолько близки, насколько они могут добраться до Google Chrome. Очень хорошая API и модель событий. Если вы найдете «не реализованные» API, скорее всего, потому что они не реализованы в Webkit. Все остальное прекрасно работает.
источник
ОБНОВЛЕНИЕ 2018 МАЯ
Если вы настраиваете приложение для работы в Windows 10, то теперь вы можете встроить браузер Edge в приложение .net с помощью Windows Community Toolkit .
Пример WPF:
1) Установите пакет Nuget для Windows Community Toolkit
2) Код XAML
3) код CS:
Пример WinForms:
Пожалуйста, обратитесь к этой ссылке для получения дополнительной информации.
источник
Попробуйте EO.WebBrowser . Он новый и основан на последней версии браузера Chrome. Самое приятное в этом то, что он упаковывает все в одну DLL-библиотеку .NET, поэтому он не только очень прост в использовании и развертывании, но и одну и ту же DLL поддерживает как 32-битную, так и 64-битную, потому что это.
источник
Я использовал GeckoFX, и он мне очень помогает. Он использует движок Firefox. Единственное предостережение, с которым я когда-либо сталкивался, это то, что он генерирует событие «DocumentLoaded» один раз до того, как документ действительно полностью загружен ... Я думаю, что он выбрасывает один при загрузке HTML, а затем еще один, когда все изображения и прочее загружены. Я исправил это, просто проигнорировав первый, и до сих пор он работал прекрасно.
Вы можете найти его здесь: https://bitbucket.org/geckofx/
Как и большинство приличных библиотек, он с открытым исходным кодом.
источник
MozNet - это элемент управления .NET, ранее основанный на более или менее заброшенном элементе управления GeckoFX, но он находится в стадии полной разработки и имеет гораздо больше возможностей, чем GeckoFX. Вы можете найти его на сайте Se7en Soft .
источник
EO.BrowserControl - это быстро и просто. Он имеет браузерный движок Chrome и работает с любой версией .NET
https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7
Примечание: это коммерчески лицензированный продукт, и я не буду продвигать его с учетом этого. Попробовав разные вещи, я выбрал это.
источник
Обновление 2016:
Есть 3 дополнительных варианта, которые я могу предложить:
1. BrowseEmAll.Cef
Компонент .Net, который можно использовать для интеграции движка Chrome в ваше приложение .Net. Основано на CefGlue, но немного быстрее на обновлениях до последней версии Chrome. Также есть коммерческая поддержка, которая может пригодиться для некоторых. Конечно, сам компонент с открытым исходным кодом .
2. BrowseEmAll.Gecko
Еще один компонент .Net, который можно использовать для интеграции движка Firefox в ваше приложение .Net. Это основано на Geckofx, но в отличие от текущей версии Geckofx, это будет работать с обычной версией Firefox. Чтобы использовать Geckofx, вам нужно собрать Firefox самостоятельно. Опять же, коммерческая поддержка доступна, но сам компонент полностью с открытым исходным кодом .
3. BrowseEmAll Core API
Нужны все разные браузеры в вашем .Net приложении? Какой API-интерфейс BrowseEmAll Core вы можете интегрировать в свое приложение Chrome, Firefox, Webkit и Internet Explorer . Это коммерческий продукт, но будьте осторожны.
(Полное раскрытие: я работаю в этой компании, поэтому примите все, что я скажу, с долей соли)
источник
Webview2 - на основе хрома (предварительный просмотр) теперь доступен как для winform, так и для wpf
Пожалуйста, посмотрите: https://docs.microsoft.com/en-us/microsoft-edge/webview2/
источник
Если вы ищете хороший элемент управления на основе IE - проверьте: http://code.google.com/p/csexwb2/
Я использовал это в производстве продуктов. Это довольно хорошо и имеет хорошие демонстрационные версии, хотя, кажется, не поддерживается так же хорошо, как раньше.
источник
Geckofx и Webkit.net поначалу были многообещающими, но они не шли в ногу с Firefox и Chrome соответственно, в то время как Internet Explorer улучшился, так же как и элемент управления Webbrowser, хотя он ведет себя как IE7 по умолчанию, независимо от того, какую версию IE вы используете. есть, но это можно исправить, зайдя в реестр и изменив его на IE9, разрешив HTML5.
источник
Проверьте элемент управления GeckoFX .
источник
Я перепробовал все браузеры, которые там есть. К сожалению, единственным, кто действительно работал на меня при любых обстоятельствах, был EO.Browser. Я хотел бы выбрать бесплатное решение, но я закончил с EO.Browser. Это довольно дорого, но в хорошем состоянии.
источник
Обновление 2016:
Для меня единственная надежная, поддерживаемая браузерная альтернатива IE - это EO.WebBrowser. Я потратил дни и недели, пробуя другие. У всех них были некоторые проблемы, которые остановили шоу для меня в какой-то момент.
источник
Возможно, стоит взглянуть на коммерческий продукт, такой как WebKitX, здесь: https://www.webkitx.com
Он использует Chromium Embedded Framework и отображает HTML5, WebGL, PDF и Flash в Windows XP, 7, 8, 10. Он также предоставляет 32-разрядные и 64-разрядные варианты управления.
Он предлагает доступ DOM с использованием COM-объектов, аналогичных элементу управления IE WebBrowser:
Вы можете вызывать JavaScript по имени функции, передавая скалярные аргументы (не используя eval), а также имеет обратные вызовы JavaScript для Angular :
Вы можете добавить свои собственные совместимые COM-объекты в JavaScript:
Он поддерживает WebGL / WebAudio для игр HTML5, которые можно отключить для сред Citrix:
источник