Anuncios

Bienvenidos sean a este post, hasta hoy hemos visto como trabajar con funciones y propiedades propias del lenguaje pero en algunas circunstancias deberemos extender a VBscript porque necesitaremos poder acceder a objetos que existen del lado del cliente, por ejemplo tenemos estas dos funciones:

  • CreateObject
  • GetObject
Anuncios

Estas son heredadas de Visual Basic y nos dan la capacidad de poder utilizar objetos de las librerias de linkeo dinamico (DLL) del Sistema Operativo o usar aplicaciones para acceder a sus objetos, si bien esto estaba mas pensado para permitirle una mejor interaccion entre el Internet Explorer y otras aplicaciones, por ejemplo Office, o conectarse a bases de datos por medio de un ODBC, al sucumbir ante Javascript esta idea quedo solamente para algunas acciones del cliente de los cuales hablaremos mas adelante.

Anuncios

CreateObject

La funcion se encarga de crear un objeto de un tipo especificado, su sintaxis es la siguiente:

CreateObject(Servidor, tipo[, ubicacion])
Anuncios

En este caso el unico parametro que es opcional es ubicacion porque sera utilizado para indicar donde crearemos el objeto, en cambio servidor va a ser el nombre de la aplicacion que nos dara el objeto y tipo indica el tipo/clase del objeto, veamos un ejemplo para entender el concepto:

object.vbs

txt="Este es un hermoso dia"
Set objReg=CreateObject("vbscript.regexp")
objReg.Pattern="e"
wscript.echo objReg.Replace(txt,"##")
Anuncios

En este caso tendremos un texto almacenado en txt, luego por medio de Set crearemos un objeto llamado objReg, en este caso usaremos un CreateObject y pasaremos a vbscript y el objeto regexp (Regular Expression), despues con nuestro objeto usaremos a Pattern (propiedad del objeto regexp) para indicar cual es el patron a buscar, por ultimo mostraremos en pantalla el reemplazo hecho por Replace (metodo del objeto) donde le pasaremos el texto (txt), recuerden que usamos Pattern para indicar que buscar, y despues con que vamos a reemplazarlo, si lo hacen se vera de la siguiente manera

Si bien esto podriamos haberlo hecho de otra forma mas simple, esto fue simplemente de practica pero mucho mas adelante veremos su verdadero uso, pasemos a la siguiente funcion.

Anuncios

GetObject

Esta funcion es similar a la anterior porque ambas devuelven una referencia a un objeto pero esta no crea un objeto a diferencia del anterior, veamos primero su sintaxis:

GetObject([Ruta][, Clase])
Anuncios

Esta funcion a diferencia de la anterior tiene dos argumentos que son opcionales, en el cual Ruta es la ruta completa de un archivo que podemos enviarle, el segundo argumento se usa para indicar la clase del objeto de automatizacion y su sintaxis es: nombreApp.tipoObjeto.

Nota: Si omitimos el primer argumento el segundo es obligatorio.

Como dijimos antes esta funcion a diferencia de la anterior tiene diferentes conductas dependiendo cuando la usemos veamos la siguiente tabla:

App ya en ejecucionResultado
GetObject(“”, “Excel.Application”)Devuelve una nueva referencia de la aplicacion
GetObject(“c:\datos.xls”)Devuelve una referencia a una hoja de calculo dentro de una instancia de Excel en ejecucion
GetObject(,”Excel.Application”)Devuelve una referencia ya existente de la aplicacion
Anuncios

Ahora veamos la siguiente tabla:

Aplicacion no ejecutadaResultado
GetObject(“”, “Excel.Application”) La aplicacion se inicia en otra instancia diferente
GetObject(“c:\datos.xls”) Se devuelve una referencia a una nueva instancia de la aplicacion con el archivo cargado.
GetObject(,”Excel.Application”) Devuelve un error
Anuncios

Como pueden ver dependiendo del estado de la aplicacion podremos tener distintas conductas e inclusive algun error, para entender esta funcion tomemos el codigo anterior y modifiquemoslo de la siguiente manera:

Set miObjeto = GetObject("","InternetExplorer.Application")
WScript.Echo miObjeto.name
miObjeto.Close
Anuncios

Primero crearemos el objeto llamado miObjeto y en este crearemos el objeto para instanciar la referencia al InternetExplorer, para luego mostrar en pantalla la propiedad name de nuestro objeto y por ultimo cerraremos el objeto, veamos su salida

Aunque despues de apretar Aceptar nos devolvera un error porque Internet Explorer no soporta close pero esto podemos usarlo para otras aplicaciones.

Nota: Esto fue verificado con un Windows 10.
Anuncios

Antes de finalizar con este post vamos a ver un ultimo ejemplo practico con CreateObject pero esta vez usaremos a wscript, veamos el siguiente codigo:

object.xls

set WshShell=WScript.CreateObject("WScript.Shell")
strAnswer = InputBox("Please enter a name for your new file:")
WshShell.run "chrome.exe"
WScript.sleep 100
WshShell.sendkeys "tinchicus.com" 
WshShell.sendkeys "{ENTER}"
Anuncios

En este caso primero crearemos un objeto llamado WshShell donde por medio de CreateObject usaremos a Wscript.Shell (la terminal de Windows), luego usaremos un inputbox para solicitar un nombre de un archivo, nuestro siguiente paso sera usar el metodo run para ejecutar a Google Chrome, luego usaremos el metodo sleep con el valor de 100 para hacer una pequeña pausa, despues por medio de sendkeys enviaremos una direccion de internet (url), por ultimo enviaremos un Enter a traves de sendkeys, en este caso cuando ingresemos el nombre del archivo este sera el receptaculo de nuestra direccion de internet y luego esta sera enviada a nuestro navegador, veamos su salida

Como pueden observar como al utilizar el nombre del archivo para almacenar temporalmente la direccion web para luego poder pasarlo a nuestro google chrome, todo de forma automatica, esto si bien ahora no tiene mucha practicidad mas adelante sera muy util para llamar a otras aplicaciones.

Anuncios

En resumen, hoy hemos visto el primer paso para automatizar algunas tareas de nuestro, las dos funciones principales para este tipo de tarea, hemos visto como utilizarlas y algunas ventajas de estas, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00