 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Mus Invitado
|
Publicado: Sab 19 Oct, 2002 3:25 pm Asunto: Comunicacion entre el navegador y mi aplicacion |
|
|
Hola!!!
Necesito mostrar en una ventana de mi aplicacion los enlaces contenidos en la página web que esté cargada en el navegador predeterminado, pero no se como acceder al codigo HTML de dicha página.
¿Alguien puede ayudarme
Muchas gracias de antemano y felicidades a los creadores de este maravilloso foro. |
|
| Volver arriba |
|
 |
Benceno Invitado
|
Publicado: Lun 23 Jun, 2003 9:42 am Asunto: |
|
|
Yo estoy buscando exactamente lo mismo. A ver si alguien nos hecha una mano.  |
|
| Volver arriba |
|
 |
Benceno Invitado
|
Publicado: Lun 23 Jun, 2003 9:47 am Asunto: |
|
|
Ah! Por cierto, se me olvidaba. Si lees un post mio por ahí abajo, verás que venía usando los componenes indy para este tema. Pero, el problema es que no funciona con todas las url. No sé si tendrá que ver con el java script de los coj... o con el servidor... o con qué narices. Pero igual para la web que quieres abrir tú te sirve. Es cuestión de probar.
Un saludo |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 25 Jun, 2003 5:03 pm Asunto: |
|
|
Hola:
Si te vale abriendo un nuevo explorer con el enlace que quieras y obtener la lista de enlaces. Aquí va un ejemplo, para probarlo añade un TListBox (ListBox1) y un botón a tu form, y en el OnClick del mismo:
| Código: | // Añadimos: #include<mshtml.h> #include<Comobj.hpp> #include<utilcls.h>
// Cargamos el IExplorer
Variant IE = CreateOleObject("InternetExplorer.Application");
// Lo hacemos visible si nos interesa
IE.OlePropertySet("Visible", true);
// Cargamos alguna página
IE.OleFunction("Navigate", "www.borland.es");
// Esperamos a que termine de cargarse
while (IE.OlePropertyGet("Busy"))
Application->ProcessMessages();
Application->BringToFront();
if (VarType(IE.OlePropertyGet("document"))!=varEmpty)
{
// Repetimos la espera por seguridad
while (IE.OlePropertyGet("Busy"))
Application->ProcessMessages();
// Obtenemos un puntero a la interface del documento
IHTMLDocument2 * pDocument;
IDispatch* disp =
static_cast<IDispatch*>(IE.OlePropertyGet("document"));
disp->QueryInterface(IID_IHTMLDocument2,
reinterpret_cast<void**>(&pDocument));
disp->Release();
// Obtenemos el conjunto de elementos
IHTMLElementCollection* pElementCollection;
pDocument->get_links(&pElementCollection);
// El numero de enlaces
long numEnlaces;
pElementCollection->get_length(&numEnlaces);
// Recorremos la lista de enlaces rellenando el ListBox
ListBox1->Clear();
ListBox1->Items->Add(String().sprintf(
"Hay %d enlaces.", numEnlaces));
while (numEnlaces--)
{
Variant indice = numEnlaces;
pElementCollection->item(indice, indice, &disp);
IHTMLElement* pElement;
disp->QueryInterface(IID_IHTMLElement,
reinterpret_cast<void**>(&pElement));
disp->Release();
WideString str;
pElement->toString(&str);
ListBox1->Items->Add(str);
pElement->Release();
}
pElementCollection->Release();
pDocument->Release();
}
// Podemos cerrarlo
// IE.OleProcedure("Quit"); |
Esta probado en el BCB4 por tanto debería ir bien en versiones superiores. Aunque si usas versiones superiores quizás te sea mejor usando el componente TCppWebBrowser (también se puede añadir fácilmente a otras versiones...)
Y si lo que quieres es obtener los enlaces de un navegador que ya estuviese abierto la cosa se complica bastante, ya que se sale de lo que seria un ejemplo breve y necesitas manejarte bien con Hooks y objetos COM. En este caso te será útil un artículo de Microsoft donde se muestra como conseguir la interfaz IHTMLDocument2 desde un handle de ventana:
[How to get IHTMLDocument from Browser Control Window Handle]
http://support.microsoft.com/support/kb/articles/Q249/2/32.ASP
Saludos:
_Leo |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|