2009-05-07 31 views
11

¿Hay algún navegador que pueda incrustar en la aplicación C++ en Windows?¿Qué navegador integrado para el proyecto C++?

Necesito todas las características típicas del navegador (cliente HTTP, compatibilidad con cookies, analizador HTML de estilo DOM, motor de JavaScript) excepto la representación. Como no necesito capacidad de renderizado (y eso es una parte bastante grande de un navegador) preferiría un navegador con un diseño no monolítico, así no tendría que incluir material de renderizado en mi proyecto.

Sería bueno si tuviera C++ en lugar de C API.

Necesito este navegador integrado, principalmente porque tengo muchos problemas para encontrar el analizador HTML de C++, que podría manejar HTML roto, como lo hacen los navegadores.
Si conoce alguno, responda Library Recommendation: C++ HTML Parser SO o, al menos, vótelo para aumentar la posibilidad de que alguien dé una buena respuesta.

+2

Realmente debe especificar para qué plataforma es esto. Algo que puede ser una buena opción en Windows no necesariamente estará disponible en OS X, por ejemplo. – ChrisInEdmonton

+0

Es para Windows. Agregué esta información a la pregunta. Gracias por descubrir esto –

Respuesta

7

Estoy un poco confundido por su pregunta sobre la incorporación de un navegador web para el que no necesita capacidades de representación. Un navegador web está representando páginas web por definición, a menos que solo necesite HTTP y XML con capacidades de JavaScript, que es un subconjunto de las funcionalidades de un navegador.

Si necesita un navegador web para incrustar en su aplicación C++, sugeriría considerar Qt que viene con el complemento WebKit. Es C++, LGPL y tiene un IDE muy bueno (Qt Creator). Intenté Qt con Qt Creator en Unix (Ubuntu) y fue muy impresionante. El depurador es un poco ligero, pero es solo la primera versión. El adaptador de Qt en Visual C++ 2008 ahora es gratis.

+0

Sí, necesito HTTP, cookies, HTML (¡no XML!) Analizador y JavaScript. Agregué todo esto a la pregunta para que sea aún más claro :) –

+0

Yo sugeriría utilizar webkit porque es bastante eficiente, especialmente el intérprete de JavaScript. Simplemente use las funcionalidades que le interesan. – chmike

8

Parece que todo lo que necesita es algo así como libcurl que es una biblioteca HTTP y le permitirá hacer GET/POST/etc.

Cuando pienso en el navegador generalmente pienso en renderizado/JavaScript y no en la biblioteca HTTP.

Editar

En ese caso me vería en WebKit (que creo que tiene un C++ API) y esperamos que no tiene que tirar demasiado en.

Editar Una vez más

Pensándolo bien (ya que la representación es una parte tan grande de lo que hacen los navegadores), puede ser mejor usar un stand-alone JS motor como SpiderMonkey y un analizador XML autónomo como Xerces-C (más quizá tidy para hacer su HTML en XML).

+0

Yo también. –

+0

Ya lo estoy usando. Necesito el motor de JavaScript y el analizador html y libcurl no tiene estas cosas. –

+4

Hubiera sido sensato enumerar esos requisitos en la pregunta. –

2

¿Qué tal Gecko? Es posible que no necesite todo el motor, pero puede encontrar algunos de sus componentes útiles como SpiderMonkey que es un motor de JavaScript escrito en C.

3

Al incluir compatibilidad con JavaScript y el análisis html, esta tarea no es trivial; debe usar una de las navegadores disponibles.

  • IE se puede utilizar a través de su modelo COM - puede crear una instancia en su ventana sea invisible o no y llame a sus capacidades de javascript/html.

Ha sido diseñado para ser utilizado así desde el principio y sin duda está funcionando bien.

Las otras opciones son:

  • Gecko/Mozilla - hace un par de años no era utilizable como esta, en la actualidad, creo que es.

  • WebKit/V8: aún no se ha publicado una API pública para chrome, podría usar webkit, pero no tiene el motor de JavaScript. Otra opción es echar un vistazo a la base de código de Chrome y ver si puede obtener lo que necesita.

Probablemente vaya para IE, ya que es quizás la opción más fácil y ya la he usado. Las otras opciones me parecen más como construir un navegador en lugar de simplemente usarlo.

2

Recomiendo elegir Qt para la programación en C++. Tiene una biblioteca incorporada que embeds Webkit con todas las campanas de cristal, y Qt es una gran biblioteca de C++ en general.

3

Es posible que desee comprobar Awesomium - es gratis para uso no comercial y tiene todas las características que está buscando (si no necesita renderizado, simplemente no lo use).

+0

Una vieja pregunta que sé, pero estaba buscando exactamente lo mismo que el OP. Tu respuesta me ayudó mucho. ¡Gracias! – William

3

hay un proyecto llamado CEF = The Chromium Embedded Framework - es:

navegadores

un marco sencillo para basados ​​en cromo-incrustación de otras aplicaciones. Es un proyecto de código abierto con licencia BSD fundado por Marshall Greenblatt en 2008 y basado en el proyecto Google Chromium. A diferencia del proyecto Chromium , que se centra principalmente en el desarrollo de la aplicación Google Chrome , CEF se centra en facilitar los casos de uso del navegador incorporado en las aplicaciones de terceros .

y sí: Marco CEF

La base incluye soporte para el C y C++ programación idiomas.

Cuestiones relacionadas