El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Script VBScript Para Hacer Felicitaciones Personalizadas

Posted by urpiano en Jueves 14 \14\UTC diciembre \14\UTC 2006

Este script nos permite lanzar un Internet Explorer, que muestra como contenido el de una página que recibe como parámetro. Dentro de la paágina tenemos tags personalizados para poder así mostrar: el nombre del usuario que lo ha lanzado, el fondo de página que pongamos como parámetro y la música de fondo, en formato midi, que recibe como parámetro. Esto nos permite, con un mismo script, tener diferentes tipos de felicitaciones (Navidad, Año Nuevo, etc.) y que se muestren personalizadas al usuario que se loga (si como script de logon lo establecemos) .

El script tiene la siguiente formade ser lanzado:

[wscript | cscript [//nologo]] felicitacion.vbs HTML imagen MIDI

Siendo:

  • HTML: nombre de un fichero html que estará situado en la misma carpeta donde esté el script. Sólo se pone el nombre del fichero, no la ruta.
  • imagen: nombre de un fichero de imagen (JPG, GIF, etc.) que se usará como fondo de la página
  • MIDI: nombre de un fichero MIDI que se usará como fondo musical de la página

Estos tres ficheros se deben situar en la misma carpeta en la que está el script y deben ser pasados como parámetros tan solo sus nombres, no sus rutas. Si deseamos que se pase el fichero con ruta completa, basta con que retoquemos el código de la siguiente manera. Donde pone:


Dim str_RutaScript
    
str_RutaScript = Left(WScript.ScriptFullName, _
                      Len(WScript.ScriptFullName) - _
                      Len(WScript.ScriptName))


Call s_Felicitacion(str_RutaScript & WScript.Arguments(0), _
                    str_RutaScript & WScript.Arguments(1), _
                    str_RutaScript & WScript.Arguments(2))

 

debemos borrar la declaración de la variable, la asignación de la misma y las referencias que se hacen a ella; así ese bloque se quedaría como:


Call s_Felicitacion(WScript.Arguments(0), _
                    WScript.Arguments(1), _
                    WScript.Arguments(2))

 

El fichero HTML debemos preparale de esta manera:

  • En su código HTML, donde queramos poner el nombre del usuario deberemos escribir el tag <!–usuario–>
  • Para establecer la imagen de fondo deberemos poner en el tag body <body background="<!–fondo–>">
  • Para establecer el sonido de fondo deberemos poner el tag <bgsound src="<!-midi–>" loop="-1">

Ejemplos:

cscript //nologo felicitacion.vbs navidad.htm nieve.jpg merry.mid

wscript felicitacion.htm anionuevo.htm cava.jpg fiesta.mid

Este es el código del script:

'Script VBScript que permite lanzar un IE con un mensaje
'personalizado al usuario. Recibe tres parámetro:
'   - El fichero HTM donde está la plantilla en la que se
      basa el mensaje
    - El fichero de imágen que tendrá el fondo del mensaje
    - El fichero midi que tendrá como fondo sonoro el mensaje
'Estos tres ficheros deben estar en la misma carpeta que 
'el script.

'El fichero html deberá tener preparada la personalización
'de esta forma:
'   - Donde quiera que deba aparecer el nombre del usuario
'     deberá tener el tag <!--usuario-->
'    - Al especificar en el tag body la imagen de fondo se
'      deberá poner <!--fondo-->
'    - Al especificar la música de fondo se debe poner en el
'      tag bgsound <!--midi->

'Ejemplo:

'cscript //nologo felicitacion.vbs navidad.htm nieve.htm merry.mid

'© Fernando Reyes - 12/2006

Option Explicit

If Not WScript.Arguments.Count = 3  Then
	
		WScript.Echo "Número erroneo de argumentos." & vbCrLF
		WScript.Echo "La sintaxis es:" & vbCrLf
		WScript.Echo "[wscript | cscript [//nologo]] <fichero" & _
	  	           "-HTML> <fichero de fondo> <fichero-MIDI>"
		WScript.Echo vbCrLf & "Siendo:" & vbCrLf
		WScript.Echo "<fichero-HTML>: fichero HTML en el que " & _
	             	 "tenemos creada la felicitación, siguiendo " & _
	             	 "la nomenclatura de etiquetas (de usuario, " & _
	             	 "fondo y midi). Debe estar en la misma " & _
	             	 "carpeta que el script." & vbCrLf
		WScript.Echo "<fichero de fondo>: imagen que queremos " & _
	             	 "sea la de fondo de la página web resultante" & _
	             	 ". Debe estar en la misma carpeta que el " & _
	             	 "script. Corresponde con la etiqueta " & _
	             	 "<!--fondo--> que lleva el fichero HTML " & _
	             	 "como imagen de fondo" & vbCrLf
		WScript.Echo "<fichero-MIDI>: fichero midi que estará " & _
	             	 "como fondo musical de la página Web " & _
	             	 "resultante. Debe estar en la misma " & _
	             	 "carpeta que el script. Corresponde con " & _
	             	 "la etiqueta <!--midi--> que lleva el " & _
	             	 "fichero HTML como sonido de fondo"
    WScript.Echo vbCrLf & vbCrLf
    WScript.Echo "Ejemplos: " & vbCrLf
    WScript.Echo "wscript felicitacion.vbs anonuevo.htm " & _
                 "cava.jpg fiesta.mid" & vbCrLf
    WScript.Echo "cscript felicitacion.vbs navidad.htm " & _
                 "arbol.jpg blanca.mid" & vbCrLf
		WScript.Echo "Nota: Para poner el nombre completo del " & _
	  	           "usuario que lanza el script, se debe " & _
	             	 "incluir la etiqueta <!--usuario--> en" & _
	             	 "el texto de la página Web, donde " & _
	             	 "queramos que aparezca."
	             
    WScript.Quit 1
  
End If

Dim str_RutaScript
    
str_RutaScript = Left(WScript.ScriptFullName, _
                      Len(WScript.ScriptFullName) - _
                      Len(WScript.ScriptName))


Call s_Felicitacion(str_RutaScript & WScript.Arguments(0), _
                    str_RutaScript & WScript.Arguments(1), _
                    str_RutaScript & WScript.Arguments(2))

Sub s_Felicitacion(str_HTML, str_Fondo, str_MIDI)
'Este procedimiento se encarga de abrir un IE, leer un documento
'HTML que recibe como parámetro y volcarlo en el IE, presentando
'la página HTML después de modificarla. Si encuentra la etiqueta
'"<!--usuario-->" la sustituye por el nombre completo del usuario
'que lanza el script. Si encuentra la etiqueta "<!--fondo-->"
'la sustituye por la ruta + nombre de fichero gráfico recibido 
'como parámetro str_Fondo, pensado para establecer el fondo de la
'página Web. Si encuentra la etiqueta "<!--midi-->" la sustituye
'por la ruta + nombre del fichero MIDI recibido como parámetro
'str_MIDI

    Dim obj_IE, obj_DocumentoIE, int_Segundos
    Dim bln_Revisado, int_Minutos, int_SegundosResto
    Dim str_Minutos, int_Contador, byt_Segundos
    Dim obj_Network
    Dim obj_Usuario
    Dim obj_FS
    Dim obj_TS
    Dim str_Texto

    Set obj_IE = WScript.CreateObject( _
          "InternetExplorer.Application")

    Set obj_Network = CreateObject("WScript.Network")
    Set obj_Usuario = GetObject("WinNT://" & _
                          obj_Network.UserDomain & "/" & _
                          obj_Network.UserName & ",user")

    'Ajustamos las propiedades iniciales del objeto
    'aplicación de Internet Explorer
    obj_IE.Navigate "about:blank"
    obj_IE.AddressBar = False
    obj_IE.StatusBar = False
    obj_IE.ToolBar = False
    obj_IE.MenuBar = False
    obj_IE.Width = 1024
    obj_IE.Height = 768
    obj_IE.Resizable = False
    obj_IE.Visible = True

'    Call s_ReproduceSonido(str_RutaScript & "wewishu1.mid")

    Set obj_FS = CreateObject("Scripting.FileSystemObject")
    Set obj_TS = obj_FS.OpenTextFile(str_HTML,1)

    Set obj_DocumentoIE = obj_IE.Document    
    
    str_Texto = Replace( _
                        Replace( _
                                Replace( _
                                         obj_TS.ReadAll, _
                                         "<!--usuario-->", _
                                         obj_Usuario.FullName), _
                                "<!--fondo-->", _
                                str_Fondo), _
                         "<!--midi-->", _
                         str_MIDI)
                         
    obj_DocumentoIE.WriteLn CStr(str_Texto)
    
End Sub

 

Fichero de Ejemplo: Aquí te puedes bajar un fichero zip con el script, una página htm de ejemplo, un fondo, un midi y un bat. Una vez descomprimido en una carpeta, basta con hacer doble click sobre el fichero bat para ver el ejemplo.

2 comentarios to “Script VBScript Para Hacer Felicitaciones Personalizadas”

  1. Diego Lopardo said

    Como estas Urpiano,

    muy buen script, se me ocurrio felicitar a los empleados (200) de la compañia el dia de su cumpleaños, pero para ahorrarme el trabajo de agregar el script en inicio de sesion de cada usuario en AD un dia antes de su cumpleaños…, me puse a investigar como poder hacerlo con una tarea programada para que ejecute el script en forma remota, tal dia para cada usuario sin importar en que equipo se loguee… finalmente no lo logre…

    Se te ocurre algo ?

    Desde ya muchas gracias y felicitaciones por el blog !!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: