Какой встроенный браузер для проекта С++?

Есть ли какой-либо браузер, который я мог бы встроить в приложение на С++ в Windows?

Мне нужны все функции, характерные для браузера (HTTP-клиент, поддержка файлов cookie, парсер HTML в стиле DOM, механизм JavaScript) кроме. Поскольку мне не нужны возможности рендеринга (и эта довольно большая часть браузера), я бы предпочел браузер с немонолитным дизайном, поэтому мне не пришлось бы включать в него рендеринг.

Было бы неплохо, если бы он имел С++, а не C API.

Мне нужен этот встроенный браузер в основном потому, что у меня много проблем с поиском С++ HTML-парсера, который может обрабатывать разбитый HTML, как браузеры. Если вы знаете какие-либо вопросы, ответьте Рекомендацию библиотеки: С++ HTML Parser. ВОПРОС или, по крайней мере, проголосуйте за это, чтобы увеличить шанс, который кто-то даст хороший ответ.

Ответ 1

Я немного смущен вашим вопросом относительно внедрения веб-браузера, для которого вам не нужны возможности рендеринга. Веб-браузер выполняет рендеринг веб-страниц по определению, если только вам не нужны HTTP и XML с возможностями JavaScript, которые являются подмножеством функций браузера?

Если вам нужен веб-браузер для встраивания в ваше приложение на С++, я бы предложил рассмотреть Qt, который поставляется с плагином WebKit. Это С++, LGPL и имеет очень приятную IDE (Qt Creator). Я пробовал Qt с Qt Creator на unix (Ubuntu), и это было очень впечатляюще. Отладчик немного светлый, но это только первая версия. Адаптер Qt в visual С++ 2008 теперь свободен.

Ответ 2

Похоже, все, что вам нужно, это что-то вроде libcurl, который является библиотекой HTTP и позволит вам делать GET/POST/etc.

Когда я думаю, что браузер я вообще считаю рендерингом /JavaScript, а не библиотекой HTTP.

Edit

В этом случае я бы посмотрел на WebKit (который, я думаю, имеет С++ API) и надеюсь, что у вас нет слишком сильно втянуть.

Изменить снова

Во второй раз (поскольку рендеринг - такая большая часть того, что делают браузеры), вам может быть лучше использовать автономный JS-движок, например SpiderMonkey и автономный XML-парсер, например Xerces-C (плюс, возможно, tidy, чтобы сделать ваш HTML в XML).

Ответ 3

Включение поддержки javascript и синтаксического анализа html делает эту нетривиальную задачу - вам нужно использовать один из доступных браузеров.

  • IE можно использовать через свою COM-модель - вы можете создать экземпляр этого в своем окне, будь то невидимым или нет, и вызовите его возможности javascript/html.

Он был разработан таким образом, чтобы использовать его с самого начала и, конечно же, он работает нормально.

Другие варианты:

  • Gecko/Mozilla - пару лет назад это было непригодным для использования, в настоящее время я думаю, что это так.

  • WebKit/V8 - публичный API еще не выпущен для Chrome, вы можете использовать сам webkit, но у него нет механизма javascript. Другой вариант - взглянуть на кодовую базу Chrome и посмотреть, сможете ли вы выйти из нее, что вам нужно.

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

Ответ 4

Вы также можете проверить Awesomium - он бесплатный для некоммерческого использования и имеет все функции, (если вам не нужен рендеринг, просто не используйте его).

Ответ 5

Существует проект CEF = The Chromium Embedded Framework - это:

простая структура для встраивание браузеров на основе хрома в другие приложения. Это BSD-лицензированный проект с открытым исходным кодом, основанный Маршаллом Гринблаттом в 2008 и основан на проекте Google Chromium. В отличие от хрома сам проект, в котором основное внимание уделяется приложению Google Chrome развития, CEF фокусируется на облегчении применения встроенных браузеров в сторонних приложений.

и да:

Базовая структура CEF включает поддержку программирования на C и С++ языки.

Ответ 6

Как насчет Gecko? Вам может не понадобиться весь движок, но вы можете найти некоторые его компоненты полезными, например SpiderMonkey, который является механизмом JavaScript, написанным на C.

Ответ 7

Я бы рекомендовал собрать Qt для программирования на С++. Он имеет встроенную библиотеку, в которой внедряет Webkit со всеми вызовами bells'n'whistles, а Qt - отличная библиотека С++ в целом.

Ответ 8

Старый вопрос, я знаю, но взгляните на http://msdn.microsoft.com/en-us/library/ky29ffxd%28v=vs.94%29.aspx

IActiveScript и семейные COM-интерфейсы позволяют выполнять script (не только JS, любой язык, который регистрируется как script, в этом случае).