Замена элемента управления .NET WebBrowser на лучший браузер, такой как Chrome?

Есть ли относительно простой способ вставить современный браузер в приложение .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 ), но похоже, что это старая версия, поэтому это не обязательно улучшение.

Я открыт для предложений

26.04.2009 09:20:30
Почему вы говорите, что элемент управления WebBrowser использует старую версию IE? Он использует версию, установленную в системе пользователя, хотя веб-браузер
Tim Robinson 26.04.2009 09:25:53
Потому что на моей машине это не так. У меня установлен IE8, но элемент управления отображает проблемы с отображением, которых я не видел со времен IE 5. Очень простая форма входа в систему, 2 поля с легким касанием CSS имеют искаженное отображение, а некоторые отображения javascript не работают, тогда как отображаются хорошо в IE8, Firefox, Chrome, Opera ... поэтому я предположил, что механизм рендеринга был старым. Я могу быть совершенно неправ в этом, и, возможно, проблема на самом деле отличается от того, что я думал.
Sylverdrag 26.04.2009 09:38:36
@Sylverdrag: Вы не правы. Он использует последнюю версию IE в вашей системе. Однако я где-то читал, что элемент управления WebBrowser имеет более сильную проблему обратной совместимости, чем автономный браузер. IE8 может иметь, например, значок для щелчка, чтобы включить режим IE7. Как часть вашей программы, это невозможно, поэтому для обеспечения совместимости по умолчанию используется более ранний режим. ОТО, я не читал, как настроить его на использование режима IE8.
John Saunders 27.04.2009 01:35:09
На самом деле, Джон Сандерс, вы не правы. Он использует ie4, и вам нужно изменить значение реестра, чтобы указать ему использовать current. Посмотрите "эмуляция режима объекта", и вы получите ваши ответы, недавно измененные, которые раньше включали в себя ключевое слово native, но они изменили его, добавьте в Google ключевые слова, которые я упомянул с помощью "контроля веб-браузера", и вы найдете статью msdn.
Erx_VB.NExT.Coder 30.09.2010 17:13:58
По умолчанию размещенный WebBrowserэлемент управления использует эмуляцию IE7, если не указано иное с FEATURE_BROWSER_EMULATION. Это задокументировано здесь: blogs.msdn.com/b/askie/archive/2009/03/23/…
noseratio 26.06.2014 07:27:50
21 ОТВЕТ

Chrome использует (ветвь) Webkit, если вы не знали, что также используется Safari. Вот несколько вопросов того же рода:

Один веб-набор не так хорош, как говорится в другом ответе, одна версия больше не работает (одна из кодов Google), а Mono - экспериментальная. Было бы неплохо, если бы кто-то попытался сделать для него достойную оболочку .NET, но это не то, что кому-то, похоже, захочется сделать - что удивительно, учитывая, что теперь у него есть поддержка HTML5 и так много других функций, что в IE (8). ) двигателя не хватает.

Обновление (2014)

Существует новый проект с двойной лицензией, который позволяет вам встраивать Chrome в ваши .NET-приложения под названием Awesomium . Он поставляется с .NET API, но требует немало хаков для рендеринга (примеры рисуют окно браузера в буфер, рисуют буфер как изображение и обновляют по таймеру).

Я думаю, что это браузер, используемый Origin в Battlefield 3.

Обновление (2016)

Теперь есть DotnetBrowser , коммерческая альтернатива Awesomium. Это основано на Хроме.

84
23.05.2017 12:18:17
Спасибо. Я посмотрю на обертку Gecko. Тем не менее, оригинальный ответ гласит: «Все, что вам нужно сделать, - это зарегистрировать элемент управления Mozilla ActiveX», и я подумал, что редакции Express не могут зарегистрировать дополнительные элементы управления. Я что-то упускаю из виду?
Sylverdrag 26.04.2009 13:32:02
@ В экспресс-изданиях можно зарегистрировать столько элементов управления, сколько вам нужно. Чего они не будут делать, так это позволить вам устанавливать плагины для Visual Studio.
Joel Coehoorn 9.04.2010 14:01:07
У меня был довольно неудачный опыт использования WebKit с C #, и, наконец, мне пришлось остановиться на компоненте веб-браузера по умолчанию, который поставляется с .NET
Sumit Ghosh 10.12.2010 23:54:08
По состоянию на эту дату вышеперечисленные проекты не являются жизнеспособными заменами. Ошибки компилятора в изобилии + нестабильность. Awesomium, полный и полный мусор.
Kraang Prime 1.04.2015 15:10:28
«Я думаю, что это браузер, используемый Origin в Battlefield 3». Это неверно Я знаю это, потому что мне пришлось заставить это приложение использовать то есть на Windows 10, потому что, когда оно по умолчанию на краю, оно не работало. Это было некоторое время назад, возможно, решенная проблема.
Theyouthis 2.02.2016 17:43:21

Взгляните на элемент управления Mono.WebBrowser - он встраивает Gecko (как используется Firefox) или WebKit (как используется Safari) в WinForms (без использования ActiveX).

18
26.04.2009 14:18:10

Проверьте элемент управления GeckoFX .

1
1.04.2015 19:26:48

Я использовал GeckoFX, и он мне очень помогает. Он использует движок Firefox. Единственное предостережение, с которым я когда-либо сталкивался, это то, что он генерирует событие «DocumentLoaded» один раз до того, как документ действительно полностью загружен ... Я думаю, что он выбрасывает одно, когда HTML загружается, а затем другое, когда все изображения и прочее загружены. Я исправил это, просто проигнорировав первый, и до сих пор он работал прекрасно.

Вы можете найти его здесь: https://bitbucket.org/geckofx/

Как и большинство приличных библиотек, он с открытым исходным кодом.

5
16.02.2016 00:11:27
Все работающие на Firefox компоненты работают с пользователями Firefox. К счастью, большинство из этих решений вообще не работают, и, если повезет, они сохранят ваши настройки Firefox в такте - не так уж повезло, вы потеряете все свои настройки, и у вас все равно не будет ничего лучше, чем IE в качестве вставки.
Kraang Prime 1.04.2015 15:16:42
Ссылка мертва и со старой сборки. bitbucket.org/geckofx имеет текущую версию
Wayne 1.04.2015 18:11:32
@Sanual Jackson - я годами пользовался GeckoFx и никогда не сталкивался с какими-либо проблемами с установкой Firefox пользователем, включая мою собственную. Вы просто догадались?
PandaWood 27.10.2015 06:27:32

Оформить заказ 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 Лицензированный

170
26.11.2014 21:54:26
Я перешел на CEfSharp из OWS, и могу с уверенностью сказать, что это очень качественное и активное сообщество. Любить это. github.com/cefsharp/CefSharp
Vin 18.10.2013 18:21:34
CefSharp великолепен, но имейте в виду, что библиотеки очень большие (20+ мегабайт в последний раз, когда я смотрел), поэтому они могут не подходить для более легкого проекта.
Skyl3lazer 13.01.2015 19:04:51
@ ANguyen да, вы можете
chillitom 9.02.2016 15:50:58
Очень, очень рад узнать, что именно вы начали этот проект! Недавно я использовал cefsharp, однако я мог видеть, что размер библиотеки составляет 80+ МБ, что огромно, но необходимо для правильного функционирования (особенно плавного рендеринга) приложения. Есть ли способ уменьшить это?
Aditya Bokade 16.06.2016 08:31:08
Это сломало мой проект. Все ссылки не работают после установки пакета winforms nuget.
toddmo 15.09.2017 23:28:55

MozNet - это элемент управления .NET, ранее основанный на более или менее заброшенном элементе управления GeckoFX, но он находится в стадии полной разработки и имеет гораздо больше возможностей, чем GeckoFX. Вы можете найти его на сайте Se7en Soft .

3
4.07.2011 19:26:00
GeckoFX активно развивается в: bitbucket
Wayne 1.04.2015 18:05:42

Вы можете использовать реестр, чтобы установить версию 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

27
20.11.2011 23:58:47
И если вы отлаживаете в Visual Studio, вам, вероятно, придется использовать «yourApplicationName.vshost.exe»
newenglander 23.01.2012 16:27:56
И если вы отлаживаете в Visual Studio, вы, вероятно, можете просто снять флажок «Включить процесс размещения Visual Studio» на вкладке «Отладка» свойств вашего проекта. Тогда вы можете использовать свое имя exe без части "vshost".
Daniel Vygolov 18.05.2014 17:38:43
@golavietnam Можете ли вы помочь мне с этим, я попробовал ваши инструкции и используя инструкции по ссылке, которую вы предоставили, но она все еще не работает. Когда я захожу на WhatIsMyBrowser.com с помощью элемента управления webbrowser, он сообщает мне, что я использую ie11, НО в режиме совместимости ie 7, и многие веб-сайты отказываются работать и выдают мне сообщение «Пожалуйста, обновите ваш браузер». Как я могу заставить контроль веб-браузера использовать последнюю версию, т.е. то, что установлено (т.е. 11), таким образом, не работает, я пробовал это сто раз.
jay_t55 24.06.2014 11:48:59
Спасибо, это сработало и спасло мой день
Tấn Nguyên 17.04.2020 19:13:51

Я попробовал несколько вариантов Webkit, но по моему опыту ничто не сравнится с достижениями OpenWebkitSharp . Любите это любите это .. Оценки HTML5 и CSS3 настолько близки, насколько они могут добраться до Google Chrome. Очень хорошая API и модель событий. Если вы найдете «не реализованные» API, скорее всего, потому что они не реализованы в Webkit. Все остальное прекрасно работает.

OpenWebKitSharp - это оболочка .net для движка webkit, основанная на проекте WebKit.NET 0.5. Он добавляет больше функциональности к версии 0.5 и предоставляет больше методов, чем эта сборка. OpenWebKitSharp поддерживает как Cairo build (0.5), так и ночные сборки webkit (по умолчанию Nightly). В Версии 1.5 Стабильная и более ночная сборка включена и автоматически копируется после сборки. В более ранних версиях это происходит со сборкой cairo. В настоящее время OpenWebKitSharp поддерживает GTLite Navigator, быстрый, стабильный и гибкий веб-браузер.

8
10.04.2012 22:40:03
Спасибо. Это выглядит как отличная находка!
Sylverdrag 16.04.2012 04:03:00
Их форумы также довольно активны, и я получил очень быстрые ответы на мои вопросы. Теперь я использую это для всех своих нужд контроля веб-браузера
Vin 16.04.2012 23:43:51
Да, он делает все это, вы вызываете ExecuteScript. Однако я перешел на CefSharp и могу сказать, что он мне больше нравится, чем OWS
Vin 18.10.2013 18:19:09
Еще один отвратительный беспорядок в коде, который не пригоден для использования вообще.
Kraang Prime 1.04.2015 15:14:41
остерегайтесь webkit не может использовать прокси, у
skhurams 19.09.2016 13:42:00

Если вы ищете хороший элемент управления на основе IE - проверьте: http://code.google.com/p/csexwb2/

Я использовал это в производстве продуктов. Это довольно хорошо и имеет хорошие демонстрационные версии, хотя, кажется, не поддерживается так же хорошо, как раньше.

1
30.11.2012 02:06:22

Я уже несколько дней тестирую альтернативы компоненту веб-браузера C # и вот мой список:

1. Использование более новых версий IE 8,9:

Компонент веб-браузера IE7 не IE8? Как это изменить?

Плюсы:

  • Не требуется много работы, чтобы запустить его
  • некоторая поддержка HTML5 / CSS3, если IE9, полная, если IE10

Минусы:

  • На целевой машине должна быть установлена ​​целевая версия IE, IE10 все еще находится в режиме предварительного просмотра на Win7

Это не требует большой работы, и вы можете получить некоторую поддержку HTML5 и CSS3, хотя в IE9 отсутствуют некоторые из лучших функций CSS3 и HTML5. Но я уверен, что вы могли бы запустить IE10 таким же образом. Проблема заключается в том, что в целевой системе должен быть установлен IE10, и, поскольку в Windows 7 он все еще находится в режиме предварительного просмотра, я бы посоветовал против него.

2. OpenWebKitSharp

OpenWebKitSharp - это оболочка .net для движка webkit, основанная на проекте WebKit.NET 0.5. WebKit - это механизм разметки, используемый Chrome / Safari

Плюсы:

  • Активно развивается
  • Поддержка HTML5 / CSS3

Минусы:

  • Многие функции не реализованы
  • Не поддерживает x64 (приложение должно быть построено для x86)

OpenWebKit довольно приятный, хотя многие функции еще не реализованы, я столкнулся с несколькими проблемами при использовании его с Visual Studio, которая выбрасывает здесь нулевую ссылку на объект, а затем в режиме разработки, есть некоторые проблемы с js. Все, кто его использует, почти сразу заметят, что js alert ничего не делает. Такие события, как mouseup, mousedown ... и т. Д. Не работают, js drag and drop содержит ошибки и т. Д.

У меня также были некоторые трудности с установкой, так как для этого требуется установленная версия распространяемого VC, поэтому после исключения я посмотрел журнал событий, нашел версию VC и установил ее.

3. GeckoFX

Плюсы:

  • Работает на моно
  • Активно развивается
  • Поддержка HTML5 / CSS3

Минусы:

  • D̶o̶e̶s̶n̶'̶t̶ ̶s̶u̶p̶p̶o̶r̶t̶ ̶x̶6̶4̶ ̶ (̶A̶p̶p̶ ̶m̶u̶s̶t̶ ̶b̶e̶ ̶b̶u̶i̶l̶t̶ ̶f̶o̶r̶ ̶x̶8̶6̶ см. Ниже - см. Ниже - см. Ниже)

GeckoFX - это кроссплатформенный веб-браузер для встраивания в приложения WinForms. Это можно использовать с .NET в Windows и с моно в Linux. Gecko - это механизм разметки, используемый Firefox.

Я наткнулся на немного информации о том, что GeckoFX активно не разрабатывается, что не соответствует действительности, конечно, это всегда одна или две версии Firefox, но это нормально, меня по-настоящему впечатлила активность и сам элемент управления. Он делает все, что мне нужно, но мне нужно было некоторое время, чтобы запустить его, вот небольшой учебник, чтобы запустить его:

  1. Загрузите GeckoFx-Windows-16.0-0.2 , здесь вы можете проверить, доступен ли более новый GeckoFX
  2. Добавить ссылки на два загруженных DLL
  3. Поскольку GeckoFX является оберткой, вам нужен XulRunner, перейдите в Список версий, чтобы узнать, какая вам нужна.
  4. Теперь, когда мы знаем, какая версия XulRunner нам нужна, мы переходим к выпускам Mozilla XulRunner , переходим в папку версий -> runtimes -> xulrunner- (your_version) .en-US.win32.zip, в нашем случае xulrunner-16.0.en- US.win32.zip
  5. Разархивируйте все и скопируйте все файлы в папку bin \ Debug (или выпустите, если ваш проект настроен на выпуск)
  6. Зайдите в визуальный дизайн-студию вашей формы, перейдите на панель инструментов, щелкните правой кнопкой мыши внутри -> Выбрать элементы -> Обзор -> Найти загруженный файл DLL-форм winck GeckoFX -> ОК
  7. Теперь у вас должен быть новый элемент управления GeckoWebBrowser

Если вы действительно должны использовать Chrome, взгляните на этот продукт под названием Awesomium , он бесплатен для некоммерческих проектов, но лицензия для коммерческих целей составляет несколько тысяч долларов.

64
23.05.2017 12:03:04
Очень хорошее описание того, как запустить GeckoFx. +1
Alex Essilfie 9.06.2013 00:15:45
при сборке Geckofx-Winforms мне потребовалось 4 библиотеки gtk # (atk-sharp, gdk-sharp, glib-sharp и gtk-sharp), поэтому мне сначала пришлось установить Mono.
bernhardrusch 27.09.2013 08:08:29
Этот ответ впечатляющий.
Mike Cole 28.02.2014 18:43:00
Отличный анализ действительно. Я хотел знать, проверял ли ты Awesomium с приложениями на C #. У вас есть что сказать по этому поводу? Я еще не проверял это, но мне кажется надежным после просмотра списка доверенных лиц, которые они упомянули на своей странице.
Abdul Rehman 6.03.2014 06:30:37
@Wayne, если вы хотите сделать это правильно, вы должны создать папку в своем проекте или отдельном проекте, в который вы бы включили все файлы, файлы gecko fx dll и xul runner и настроить их на копирование всегда, а затем при каждом действии сборки, которое они получат копируется в папку build / debug или публикуется, если вы публикуете из VS, есть также метод Xpcom.Initialize, который вы должны вызвать, и вы можете передать ему путь к файлам xul runner, надеюсь, это поможет
formatc 1.04.2015 16:43:42

Поначалу Geckofx и Webkit.net были многообещающими, но они не шли в ногу с Firefox и Chrome соответственно, в то время как Internet Explorer улучшился, так же как и элемент управления Webbrowser, хотя он ведет себя как IE7 по умолчанию, независимо от того, какую версию IE вы используете. есть, но это можно исправить, зайдя в реестр и изменив его на IE9, разрешив HTML5.

1
7.08.2013 21:24:32

Попробуйте EO.WebBrowser . Он новый и основан на последней версии браузера Chrome. Самое приятное в этом то, что он упаковывает все в одну DLL-библиотеку .NET, так что она не только очень проста в использовании и развертывании, но и одна и та же DLL поддерживает как 32-битную, так и 64-битную версию, потому что это DLL-библиотека .NET.

6
27.01.2014 18:48:11
В будущем, пожалуйста, укажите, что это коммерчески лицензированный продукт, и если у вас есть какие-либо связи с продуктом, см. Избегайте явной саморекламы в часто задаваемых вопросах.
Andy Brown 2.02.2014 19:46:59
После поисков ГОДОВ - безумного шляпника - этот «коммерческий» элемент управления - ЕДИНСТВЕННАЯ рабочая замена вставки для IE, с которой мне не пришлось возиться и не испортил ни один из моих нынешних браузеров. настройки. - если пометка, я не связан с EO в любой форме или форме. Я взбешен тем, что все эти другие решения - абсолютно бесполезный мусор и пустая трата времени.
Kraang Prime 1.04.2015 15:18:14
@SanuelJackson GeckoFx отлично работает в моей компании и не вызывает никаких проблем с настройками браузера
Wayne 1.04.2015 18:14:44
@ Уэйн - это хорошо для тебя. Ни один из этих открытых проектов не является заменой вставки, требующей значительных изменений для работы в качестве управляемого кода, особенно в качестве вставки элемента управления winforms. Им либо не хватает функциональности, которую предлагает элемент управления IE, и / или они полны, поскольку они постоянно аварийно завершают работу, либо работают медленно - даже не могут перечислить все проблемы здесь. Возможно, в другое десятилетие, когда Интернет больше не будет нуждаться в веб-браузерах, возможно, тогда что-то жизнеспособное будет в рабочем состоянии.
Kraang Prime 1.04.2015 22:56:58
@SanuelJackson Хмм, хотелось бы, чтобы ты сказал правду. К сожалению, ни одна из альтернатив (в том числе GeckoFX) не имела для меня ошибок остановки показа. Я также хотел бы избежать высокой цены за браузер Essential Objects. Но это был единственный, который работал для меня безупречно.
Maiken Roskilde 15.01.2016 21:26:33

Я знаю, что это не «заменяющий» элемент управления WebBrowser, но у меня были некоторые ужасные проблемы с рендерингом при отображении страницы, на которой использовался BootStrap 3+ для макета и т. Д., А затем я нашел сообщение, в котором предлагалось использовать следующее. По-видимому, он специфичен для IE и говорит ему использовать для рендеринга последний вариант, найденный на клиентском компьютере (поэтому он не будет использовать IE7, как я считаю, по умолчанию)

Так что просто поставьте:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

где-то в головной части вашего документа.

Если, конечно, это не ваш документ, то это, очевидно, не поможет (хотя я лично считаю, что это дыра в безопасности, если вы читаете страницы, созданные не вами самими с помощью элемента управления веб-браузера - почему бы просто не использовать веб-браузер!)

Удачи.

15
5.05.2014 07:56:58
Если вы хотите , чтобы работать на компьютере под управлением IE7, не ставьте его куда - то в <head>, поставить его в качестве самого первого ребенка <head>. Нам потребовалось некоторое время, чтобы понять это.
Sylvain 8.05.2014 13:29:49
Извините, я имел в виду IE8, а не IE7 в моем предыдущем комментарии. Таким образом, в IE8, если вы не указали в <meta>качестве первого потомка <head>, он будет работать в режиме совместимости, а не в пограничном режиме.
Sylvain 8.05.2014 13:57:18
Я использовал плагин webbrowser в приложении winform, и это мне очень помогло. Страница, на которую я заходил, использовала jquery & angularjs, которая задыхалась, потому что считала, что браузер IE7, хотя у меня установлен IE10.
Kywillis 15.07.2014 15:37:27
Это работа для меня! Вы также можете использовать это, чтобы установить конкретную версию IE, например: <meta http-equ = "X-UA-Compatible" content = "IE = 10" /> и всегда браузер работает как 10 (конечно, вам нужно установить ту же версию или выше
freedeveloper 14.02.2015 07:47:45
Это идеально подходит для моего использования. Я хочу показать более хорошие отчеты в формате HTML. Уже есть много CSS-контента. Это лучший подход, чем встраивание chrome / firefox.
MD Luffy 18.03.2015 21:10:13

EO.BrowserControl это быстро и легко. Он имеет браузерный движок Chrome и работает с любой версией .NET

https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7

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

2
11.11.2014 21:33:27

Взгляните на библиотеку 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");
        }
    }
}

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

введите описание изображения здесь

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

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

13
10.06.2019 14:15:45
Остерегайтесь высокой цены этого продукта
jjxtra 7.03.2018 20:19:00
Это не с открытым исходным кодом, это лицензия не дешевле.
Ashish-BeJovial 22.02.2019 05:37:10

У меня была та же проблема, WebBrowser использовал старую версию IE, с некоторым поиском в Google, я наткнулся на следующий код, который вносит изменения в реестр и позволяет WebBrowser использовать самую последнюю версию IE:

 public enum BrowserEmulationVersion
    {
        Default = 0,
        Version7 = 7000,
        Version8 = 8000,
        Version8Standards = 8888,
        Version9 = 9000,
        Version9Standards = 9999,
        Version10 = 10000,
        Version10Standards = 10001,
        Version11 = 11000,
        Version11Edge = 11001
    }
    public static class WBEmulator
    {
        private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer";

        public static int GetInternetExplorerMajorVersion()
        {
            int result;

            result = 0;

            try
            {
                RegistryKey key;

                key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey);

                if (key != null)
                {
                    object value;

                    value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null);

                    if (value != null)
                    {
                        string version;
                        int separator;

                        version = value.ToString();
                        separator = version.IndexOf('.');
                        if (separator != -1)
                        {
                            int.TryParse(version.Substring(0, separator), out result);
                        }
                    }
                }
            }
            catch (SecurityException)
            {
                // The user does not have the permissions required to read from the registry key.
            }
            catch (UnauthorizedAccessException)
            {
                // The user does not have the necessary registry rights.
            }

            return result;
        }
        private const string BrowserEmulationKey = InternetExplorerRootKey + @"\Main\FeatureControl\FEATURE_BROWSER_EMULATION";

        public static BrowserEmulationVersion GetBrowserEmulationVersion()
        {
            BrowserEmulationVersion result;

            result = BrowserEmulationVersion.Default;

            try
            {
                RegistryKey key;

                key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
                if (key != null)
                {
                    string programName;
                    object value;

                    programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
                    value = key.GetValue(programName, null);

                    if (value != null)
                    {
                        result = (BrowserEmulationVersion)Convert.ToInt32(value);
                    }
                }
            }
            catch (SecurityException)
            {
                // The user does not have the permissions required to read from the registry key.
            }
            catch (UnauthorizedAccessException)
            {
                // The user does not have the necessary registry rights.
            }

            return result;
        }
        public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion)
        {
            bool result;

            result = false;

            try
            {
                RegistryKey key;

                key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);

                if (key != null)
                {
                    string programName;

                    programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);

                    if (browserEmulationVersion != BrowserEmulationVersion.Default)
                    {
                        // if it's a valid value, update or create the value
                        key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);
                    }
                    else
                    {
                        // otherwise, remove the existing value
                        key.DeleteValue(programName, false);
                    }

                    result = true;
                }
            }
            catch (SecurityException)
            {
                // The user does not have the permissions required to read from the registry key.
            }
            catch (UnauthorizedAccessException)
            {
                // The user does not have the necessary registry rights.
            }

            return result;
        }

        public static bool SetBrowserEmulationVersion()
        {
            int ieVersion;
            BrowserEmulationVersion emulationCode;

            ieVersion = GetInternetExplorerMajorVersion();

            if (ieVersion >= 11)
            {
                emulationCode = BrowserEmulationVersion.Version11;
            }
            else
            {
                switch (ieVersion)
                {
                    case 10:
                        emulationCode = BrowserEmulationVersion.Version10;
                        break;
                    case 9:
                        emulationCode = BrowserEmulationVersion.Version9;
                        break;
                    case 8:
                        emulationCode = BrowserEmulationVersion.Version8;
                        break;
                    default:
                        emulationCode = BrowserEmulationVersion.Version7;
                        break;
                }
            }

            return SetBrowserEmulationVersion(emulationCode);
        }
        public static bool IsBrowserEmulationSet()
        {
            return GetBrowserEmulationVersion() != BrowserEmulationVersion.Default;
        }
    } 

Вам просто нужно создать класс и поместить в него этот код, а затем запустить следующий код при запуске программы:

 if (!WBEmulator.IsBrowserEmulationSet())
            {
                WBEmulator.SetBrowserEmulationVersion();
            }

VB.NET:

Imports Microsoft.Win32
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Security
Imports System.Text
Imports System.Threading.Tasks

Public Enum BrowserEmulationVersion
    [Default] = 0
    Version7 = 7000
    Version8 = 8000
    Version8Standards = 8888
    Version9 = 9000
    Version9Standards = 9999
    Version10 = 10000
    Version10Standards = 10001
    Version11 = 11000
    Version11Edge = 11001
End Enum


Public Class WBEmulator
    Private Const InternetExplorerRootKey As String = "Software\Microsoft\Internet Explorer"
    Public Shared Function GetInternetExplorerMajorVersion() As Integer

        Dim result As Integer

        result = 0

        Try
            Dim key As RegistryKey
            key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey)
            If key IsNot Nothing Then
                Dim value As Object = If(key.GetValue("svcVersion", Nothing), key.GetValue("Version", Nothing))

                Dim Version As String
                Dim separator As Integer
                Version = value.ToString()
                separator = Version.IndexOf(".")
                If separator <> -1 Then
                    Integer.TryParse(Version.Substring(0, separator), result)
                End If
            End If

        Catch ex As SecurityException
            'The user does Not have the permissions required to read from the registry key.
        Catch ex As UnauthorizedAccessException
            'The user does Not have the necessary registry rights.
        Catch

        End Try
        GetInternetExplorerMajorVersion = result
    End Function
    Private Const BrowserEmulationKey = InternetExplorerRootKey + "\Main\FeatureControl\FEATURE_BROWSER_EMULATION"

    Public Shared Function GetBrowserEmulationVersion() As BrowserEmulationVersion

        Dim result As BrowserEmulationVersion
        result = BrowserEmulationVersion.Default

        Try
            Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
            If key IsNot Nothing Then
                Dim programName As String
                Dim value As Object
                programName = Path.GetFileName(Environment.GetCommandLineArgs()(0))
                value = key.GetValue(programName, Nothing)
                If value IsNot Nothing Then
                    result = CType(Convert.ToInt32(value), BrowserEmulationVersion)
                End If
            End If
        Catch ex As SecurityException
            'The user does Not have the permissions required to read from the registry key.
        Catch ex As UnauthorizedAccessException
            'The user does Not have the necessary registry rights.
        Catch

        End Try

        GetBrowserEmulationVersion = result
    End Function
    Public Shared Function SetBrowserEmulationVersion(BEVersion As BrowserEmulationVersion) As Boolean

        Dim result As Boolean = False

        Try
            Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, True)
            If key IsNot Nothing Then
                Dim programName As String = Path.GetFileName(Environment.GetCommandLineArgs()(0))
                If BEVersion <> BrowserEmulationVersion.Default Then
                    'if it's a valid value, update or create the value
                    key.SetValue(programName, CType(BEVersion, Integer), RegistryValueKind.DWord)
                Else
                    'otherwise, remove the existing value
                    key.DeleteValue(programName, False)
                End If
                result = True
            End If
        Catch ex As SecurityException

            ' The user does Not have the permissions required to read from the registry key.

        Catch ex As UnauthorizedAccessException

            ' The user does Not have the necessary registry rights.

        End Try

        SetBrowserEmulationVersion = result
    End Function


    Public Shared Function SetBrowserEmulationVersion() As Boolean
        Dim ieVersion As Integer
        Dim emulationCode As BrowserEmulationVersion
        ieVersion = GetInternetExplorerMajorVersion()

        If ieVersion >= 11 Then

            emulationCode = BrowserEmulationVersion.Version11
        Else

            Select Case ieVersion
                Case 10
                    emulationCode = BrowserEmulationVersion.Version10
                Case 9
                    emulationCode = BrowserEmulationVersion.Version9
                Case 8
                    emulationCode = BrowserEmulationVersion.Version8
                Case Else
                    emulationCode = BrowserEmulationVersion.Version7
            End Select
        End If

        SetBrowserEmulationVersion = SetBrowserEmulationVersion(emulationCode)
    End Function

    Public Shared Function IsBrowserEmulationSet() As Boolean
        IsBrowserEmulationSet = GetBrowserEmulationVersion() <> BrowserEmulationVersion.Default
    End Function
End Class

Вы можете использовать это как:

If Not WBEmulator.IsBrowserEmulationSet() Then
    WBEmulator.SetBrowserEmulationVersion()
End If
41
13.02.2019 06:00:28
Отлично!! Спасибо огромное!
Ben 6.06.2016 00:23:26
Переведен на Python (работает над приложением IronPython), и он работал отлично. Спасибо!
David 13.07.2016 19:30:09
Это спасает мою жизнь! Спасибо
Neeraj Dubey 17.11.2017 14:51:43
Это фантастика, но можно ли сбросить версию эмуляции? Кажется, что версия может быть установлена ​​только один раз в приложении WinForms. Хотя его можно сбросить, возможно, что после установки и сброса в реестре он не перечитывается с новыми значениями реестра в приложении WinForms.
cymorg 24.04.2019 14:40:38
@DarrenMB, насколько я знаю, использует IE11
Ashkan Mobayen Khiabani 10.06.2019 08:05:40

Я перепробовал все браузеры, которые там есть. К сожалению, единственным, кто действительно работал на меня при любых обстоятельствах, был EO.Browser. Хотелось бы выбрать бесплатное решение, но я остановился на EO.Browser. Это довольно дорого, но в хорошем состоянии.

0
15.01.2016 20:44:18

Обновление 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 . Это коммерческий продукт, но будьте осторожны.

(Полное раскрытие: я работаю в этой компании, поэтому примите все, что я говорю, с долей соли)

2
13.02.2016 11:07:05

Обновление 2016:

Для меня единственной надежной, поддерживаемой браузерной альтернативой IE является EO.WebBrowser. Я потратил дни и недели, пробуя другие. У всех них были некоторые проблемы, которые остановили шоу для меня в какой-то момент.

0
8.07.2016 08:52:11
Ну ... я болталась неделю? пытаюсь заставить работать MS WebBrowser - все безрезультатно. Не пробовал ни одного из остальных =: - {кроме EO.WebBrowser, который работал у меня впервые. Таким образом, это 20 минут с EO и успехом против 5 дней с MS и полным и полным позорным провалом. Все, что мне нужно сделать сейчас, это найти 750 долларов, чтобы купить «успех» !!!
Richard Hammond 24.01.2018 21:53:27

ОБНОВЛЕНИЕ 2018 МАЯ

Если вы настраиваете приложение для запуска в Windows 10, то теперь вы можете встроить браузер Edge в приложение .net с помощью Windows Community Toolkit .

Пример WPF:

1) Установите пакет Nuget для Windows Community Toolkit

Install-Package Microsoft.Toolkit.Win32.UI.Controls

2) Код XAML

<Window
    x:Class="WebViewTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:WPF="clr-namespace:Microsoft.Toolkit.Win32.UI.Controls.WPF;assembly=Microsoft.Toolkit.Win32.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WebViewTest"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>
        <WPF:WebView x:Name="wvc" />
    </Grid>
</Window>

3) код CS:

public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();

    // You can also use the Source property here or in the WPF designer
    wvc.Navigate(new Uri("https://www.microsoft.com"));
  }
}

Пример WinForms:

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();

    // You can also use the Source property here or in the designer
    webView1.Navigate(new Uri("https://www.microsoft.com"));
  }
}

Пожалуйста, обратитесь к этой ссылке для получения дополнительной информации.

6
2.05.2019 11:34:50
Я установил пакет Nuget, но он не работает. Еще ты.
Deniz 14.02.2020 13:04:59

Возможно, стоит взглянуть на коммерческий продукт, такой как 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:

введите описание изображения здесь

1
19.01.2020 11:24:25
Я использую это в производстве, и я полностью доверяю. Я пробовал много других, и я застрял с этим браузером. Разработчики действительно хорошие и "личные". Я не чувствовал себя одиноким, как и многие другие. Действительно хороший и стабильный продукт.
tmighty 19.01.2020 14:58:00