Categories
programación

Acceder a objetos OLE y ActiveX desde Java

Object Linking and Embedding (OLE) es un sistema de objeto distribuido y un protocolo desarrollado por Microsoft. Esta tecnología permite que se pueda intercambiar información entre distintas aplicaciones, ya sean comando, datos u otro tipo de elementos. Es posible que alguna vez pueda ser necesario el acceder a este tipo de objetos desde una aplicación java, y para ello existe una librería llamada jacob (Java COM Bridge) que nos permite hacerlo.

Para el que esté interesado en usarlo aquí dejo un pequeño ejemplo que abrirá una ventana de Internet Explorer, navegará hasta la página principal de mi blog y a los 10 segundos se cerrará:

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import java.util.logging.Level;
import java.util.logging.Logger;

public class OLE {

    // Declaración de la variable que almacenará el objeto OLE
    static ActiveXComponent IE;
    public static void main(String[] args){
      // Inicialización de la librería
      ComThread.InitSTA();
      // Creacón del objeto
      IE = new ActiveXComponent("InternetExplorer.Application");
      // Cambio de una propiedad del objeto
      Dispatch.put(IE, "Visible", true);

      // Invocación de un procedimiento
      Dispatch.call(IE, "Navigate", "http://blog.wikifotos.org");

      //Espera de 10 segundos
        try {
            Thread.sleep(10000);
        } catch (InterruptedException ex) {
            Logger.getLogger(OLE.class.getName()).log(Level.SEVERE, null, ex);
        }
      
      // Llamada al método que cierra la aplicación
      Dispatch.call(IE, "Quit");
  }
}

Para compilar el ejemplo*:

javac -cp lib\jacob.jar OLE.java

Para ejecutarlo*:

java -cp .;lib\jacob.jar -Djava.library.path=lib OLE

* en la carpeta “lib” han de estar contenidos los archivos: jacob.jar y jacob-X.XX-XX-x86.dll descargados de su página oficial.

Para usuarios más avezados, en el mismo archivo donde se incluyen las librerías se pueden encontrar también ejemplos más complejos del uso de la librería. Y si queréis trastear algo más con Internet Explorer aquí tenéis una referencia de propiedades y métodos disponibles.

One reply on “Acceder a objetos OLE y ActiveX desde Java”

Leave a Reply

Your email address will not be published. Required fields are marked *