Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

CreateOleObject("???");

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: CreateOleObject("???"); Responder citando

Quiero acceder al documento que esta cargado en el navegador, para lo que hago lo siguiente:

Variant IE;
IE = CreateOleObject("InternetExplorer.Application");

Ahora quiero acceder al modelo de objetos. En Delphi funciona directamente así: p. ej. IE.document.links.length (propiedad que nos da el número de enlaces del documento).
Supongo que tengo que utilizar OlePropertyGet(), OlePropertySet(), OleProcedure(), OleFunction(), Exec(), pero no se que parámetros debo pasarles ni donde consultarlo.

Tb me gustaría saber si en lugar de "InternetExplorer.Application" puedo pasar otra cadena que me devuelva como objeto el navegador por defecto para que funcione en equipos q no usen IExplorer.

Gracias. Sad
Volver arriba
Mensaje    Asunto: Responder citando

Te pongo un ejemplo de lo que entiendo quieres hacer. Añadimos un botón y dentro del OnClick del mismo lo siguiente:
Código:
        // Añadimos: #include<ComObj.hpp> para BCB3,4,5,6
        // o: #include<OleAuto.hpp> para BCB1

    Variant ie = CreateOleObject("InternetExplorer.Application");

        // Hacemos visible el navegador y cargamos una página
    ie.OlePropertySet("Visible", true);
    ie.OleProcedure("Navigate", "http://www.terra.es");

        // Esperamos hasta que se haya cargado la página completa
        // (el casting no es necesario en algunas versiones de BCB)
    while ( static_cast<bool>(ie.OlePropertyGet("Busy")) )
        Application->ProcessMessages();

        // Ponemos en primer plano nuestra aplicación
    Application->BringToFront();

        // Mostramos el número de enlaces en la página
    ShowMessage(
        ie.OlePropertyGet("Document")
          .OlePropertyGet("links")
          .OlePropertyGet("length") );


Y con respecto a la segunda pregunta, esto es propio del IExplorer, para otros navegadores tendrás que consultar su documentación. Por ejemplo recuerdo que el Netscape se podía manejar usando DDE, pero no te puedo dar mas detalles, no creo que te cueste mucho encontrar algo en algún buscador sobre esto.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas Gracias.

Respecto a la segunda pregunta, ¿Cómo puedo saber cual es el navegador predeterminado del equipo?, es para saber que objeto ole tengo que crear, dependiendo del equipo en que se ejecute la aplicación.

Gracias de nuevo.
Volver arriba
Mensaje    Asunto: Responder citando

Con lo siguiente puedes leer del registro cual es el ejecutable del navegador por defecto que te servirá para identificar cual es:

  // Añadimos: #include<registry.hpp>
  TRegistry *reg = new TRegistry;
  reg->RootKey = HKEY_CLASSES_ROOT;
  if ( reg->OpenKey("http\\shell\\open\\command", false) )
      ShowMessage( reg->ReadString("") );
  delete reg;
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ya se que soy un "pesao" pero, ¿Sabrías decirme donde encontrar informacion sobre estas propiedades y métodos (document, Visible, Busy, etc.)?

Gracias de nuevo (otra vez). Laughing
Volver arriba
Mensaje    Asunto: Responder citando

Yo la he sacado mirando en el API las interfaces IWebBrowser2 y IHTMLDocument2 entre otras.

Otros enlaces:
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/webbrowser.asp

Si quieres bajar la referencia del API actualizada aquí tienes el enlace:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/default.htm
(la información es la misma que la de arriba, pero con la ventaja de que la puedes consultar offline)
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Eternamente agradecido Very Happy
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.