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”
como me demore encontrandote