NorfiPC
NorfiPC » Scripts para Windows » Usar VBScript

Códigos para crear aplicaciones en VBScript para usar en Windows

Como usar el lenguaje VBScript para crear scripts, que se pueden ejecutar en Windows en forma de aplicaciones con la extensión VBS, en la consola de CMD, insertados en las páginas web o creando aplicaciones HTA. Plantillas para hacer tus propios scripts, páginas web y páginas HTA
Usar VBScript en Windows

¿Qué es el lenguaje VBScript?


VBScript es un lenguaje de programación que deriva del famoso Visual Basic de Microsoft. Fue creado con el propósito de sustituir el lenguaje MSDOS y suplir sus carencias.
En la práctica no ha sido así, pero no obstante podemos utilizarlo ya que agrega opciones y posibilidades imposibles de lograr con un archivo batch.
En esta página se muestran algunos códigos de ejemplos, que pueden resultar muy útiles a los aficionados para crear sus propias aplicaciones y los estimularán a interesarse más en el tema.
También se incluyen plantillas para crear páginas y web y paginas HTA donde utilizar los scripts.
Los scripts escritos en el lenguaje VBScript, los podemos usar de varias formas: mediante archivos ejecutables con la extensión .VBS, mediante el Símbolo del sistema, mediante el navegador Internet Explorer o creando aplicaciones HTA.



¿Qué son los archivos VBS y como crearlos?


En Windows se pueden crear aplicaciones ejecutables, insertando el código en formato VBScript en archivos de texto, creados con el Bloc de notas u otro editor.
Son conocidos popularmente como scripts o archivos VBS.
Los archivos deben tener la extensión de archivo .VBS.
'Código de ejemplo para crear un VBS
MsgBox "Hola, soy un VBS" & vbCrlf & "Hoy es: "& Date & vbCrlf & "Hora: " & Time,266304

Al ejecutarlos (dos clics) Windows inicia Windows Scripting Host (wscript.exe), aplicación incluida en el sistema, que ejecuta las instrucciones contenidas en el código, mostrando la interface como cuadros de diálogos y otras ventanas.
El script de ejemplo creado con el código anterior, al ejecutarlo muestra un mensaje de texto, la fecha y la hora, con un icono de información.
La primera línea es solo un comentario.

Ejecutar archivos VBS en la consola de CMD

Los scripts escritos en lenguaje VBScript se pueden ejecutar en la consola usando el comando CSCRIPT, para eso Windows utiliza la aplicación cscript.exe incluida en el sistema.
La sintaxis es la siguiente:
CSCRIPT Archivo Opciones
De forma similar pueden ejecutarse iniciándolos con un archivo batch.

Ejecutar scripts VBS en las páginas web

Otro método es insertar los scripts en el código HTML de las páginas web, de esa forma el navegador puede ejecutar las instrucciones contenidas.
Los scripts deben estar encerrados en las siguientes etiquetas:
<script type="text/vbscript"> 
</script>
También pueden usarse en eventos.
Por ejemplo, puedes usarlo en un botón de la siguiente forma:
<input type="button" value="Mensaje" 
onclick="vbscript:MsgBox 'Enviar un mensaje al usuario', 64, 'NorfiPC'";>
Estas funciones contenidas en las páginas solo funcionarán usando Internet Explorer, el resto de los navegadores las ignorarán.

Ejecutar scripts VBS en aplicaciones HTA

Es posible y muy práctico usar los scripts en aplicaciones o paginas HTA, también conocidas como aplicaciones HTML.
No son más que páginas web escritas en HTML, pero con la extensión de archivo HTA.
Windows las abre usando mshta.exe y funcionan de forma similar a una aplicación.



¿Para que usar los scripts en Windows?


Los scripts podemos utilizarlos en la práctica con propósitos diferentes, por ejemplo:
• Iniciar aplicaciones o programas
• Abrir herramientas y funciones de Windows
• Ejecutar instrucciones en la consola de CMD
• Cambiar valores en las claves del Registro de Windows
Usando scripts los desarrolladores tienen la posibilidad que el usuario desde la misma página web, pueda ejecutar funciones en su equipo, sin descargar ni instalar ninguna aplicación, lo que le agrega interacción y funcionalidad a dicha página.



Ejemplos elementales del uso de VBScript


Para probar los siguientes ejemplos cópialos al Bloc de notas y guarda el archivo con cualquier nombre, pero con la extensión de archivo: .VBS

Mostrar mensajes e información

Formas diferentes de devolver mensajes al usuario
MsgBox "Mensaje sencillo"
MsgBox "Mensaje con un icono de advertencia",48
MsgBox "Mensaje con un icono de Información",266304
texto = "Mensaje con un titulo"
MyBox = MsgBox(texto,266304,"Soy el titulo!")

Enviar instrucciones de pulsaciones al teclado

El siguiente script al ejecutarlo, se obtiene un efecto similar que usar la tecla F1.
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "{F1}"

Iniciar programas o aplicaciones

Abrir la calculadora de Windows, puede ser cualquiera otra aplicación o programa.
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc.exe"



Ejecutar comandos de la Shell de Windows

Abrir el Panel de control de Windows
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "explorer.exe shell:ControlPanelFolder"
De la misma forma anterior puede usarse cualquier otro de los comandos de la Shell de Windows, que permiten abrir funciones y carpetas especiales del sistema.
Lee la lista completa en la siguiente página: Lista de todos los comandos disponibles en la shell de Windows

Ejecutar comandos en la consola de CMD

El siguiente script ejecuta el comando NETSTAT en la consola de CMD.
Set objShell = CreateObject("WScript.Shell")
strCommand = "cmd /k netstat -a"
objShell.Run strCommand, 1

Conocer la configuracion de redes usando el comando NETSH.
Set objShell = CreateObject("WScript.Shell")
strCommand = "cmd /k netsh interface ip show config"
objShell.Run strCommand, 1

Otro modo de abrir la consola, en este caso se ejecuta el comando IPCONFIG
Set objWshell = Wscript.CreateObject("Wscript.Shell")
objWshell.Run "cmd /k ipconfig"

En este caso el resultado que devuelve la consola se muestra en un cuadro de mensaje al usuario.
Se pude usar en vez de la opción readall, read(x), donde x es el número de caracteres que queremos mostrar.
Set objshell = createobject("wscript.shell")
Set ping = objshell.exec("cmd /c ipconfig /all")
Msgbox ping.stdout.readall



Códigos y ejemplos prácticos para crear scripts en Windows


Mensaje del narrador de Windows

Inicia el narrador de Windows que pronuncia el mensaje que aparece en el código, de copiarse el script a la carpeta de Inicio, funcionará cada vez que se inicie el sistema.
Dim speaks, speech 
speaks="Bienvenido" 
Set speech=CreateObject("sapi.spvoice") 
speech.Speak speaks

Explorar carpetas

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
    (WINDOW_HANDLE, "Selecciona una carpeta:", NO_OPTIONS)   
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
objShell.Explore strPath

Mostrar/Ocultar las extensiones de archivo

Funciona como un interruptor que muestra y oculta las extensiones de los archivos en Windows.
Al terminar refresca (F5) el directorio donde se utilice.
FileExt = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\HideFileExt"
Set Sh = WScript.CreateObject("WScript.Shell")
St = Sh.RegRead(FileExt)
If St = 1 Then
Sh.RegWrite FileExt, 0, "REG_DWORD"
Else
Sh.RegWrite FileExt, 1, "REG_DWORD"
End If
Sh.SendKeys("{F5}")

Crear un punto de restauración

Option Explicit
Dim oSysRestore, sName, makeRestorePoint, sMsg
sMsg= msgBox("Este script creara un punto de restauracion. Continuar?", vbYesNo)
If sMsg = vbNo then wScript.Quit
Set oSysRestore = GetObject( "winmgmts:\\.\root\default:Systemrestore" )
sName = inputBox("Escriba el nombre para el punto de restauracion." & vbCrlf & "El dato sera incluido.", "Name the restore point")
if sName ="" then wScript.Quit
makeRestorePoint = oSysRestore.CreateRestorePoint( sName, 0, 100 )
msgBox "El punto de restauracion llamado " & sName & " ha sido creado"
set oSysRestore = Nothing
wscript.Quit

Muestra la cantidad de memoria RAM libre

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colSettings 
    Wscript.Echo "RAM disponible: " & _
        objOperatingSystem.FreePhysicalMemory
Next

Muestra la cantidad de memoria RAM instalada

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings 
    Wscript.Echo "Nombre del equipo: " & objComputer.Name
    Wscript.Echo "Memoria física total: " & _
        objComputer.TotalPhysicalMemory
Next

Identificar dispositivos en conflicto en el equipo

strComputer = "."
Set objWMIService = GetObject(_
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_PnPEntity " _
        & "WHERE ConfigManagerErrorCode <> 0")
For Each objItem in colItems
    Wscript.Echo "Nombre: " & objItem.Name
    Wscript.Echo "Descripción: " & objItem.Description
    Wscript.Echo "ID Identidad del dispositivo: " & objItem.DeviceID
    Wscript.Echo "Fabricante: " & objItem.Manufacturer
    Wscript.Echo "Class GUID: " & objItem.ClassGuid
    Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
    Wscript.Echo "Servicio: " & objItem.Service
Next

Información del CPU del equipo

strComputer = "."
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem") 
For Each objItem in colItems 
 Msgbox "Numero de procesadores: " & objItem.NumberOfProcessors
Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor") 
For Each objItem in colItems 
 MsgBox "Tipo de procesador: " & objItem.Name
 MsgBox "Numero de procesadores logicos: " & objItem.NumberOfLogicalProcessors
 MsgBox "Cantidad de nucleos: " & objItem.NumberOfCores
Next 

Crear nota de texto

La primera vez que se ejecuta crea un archivo de texto llamado nota.txt, que incluye la fecha y hora actual.
Al ejecutarse posteriormente agregará al mismo archivo la nueva fecha y hora y así sucesivamente.
Set FSO = CreateObject("Scripting.FileSystemObject")
Set lf = FSO.OpenTextFile("nota.txt", 8, True)
msg = Date & " " & Time
lf.WriteLine(msg)
lf.Close
Set lf=Nothing
Set FSO=Nothing

Crear un acceso directo

Set objshell = createobject("wscript.shell")
Set ellink = objshell.createshortcut("C:\Notepad.lnk")		
Ellink.targetpath = "C:\windows\notepad.exe"	
Ellink.windowstyle = 1
Ellink.hotkey = "CTRL+SHIFT+N"
Ellink.iconlocation = "C:\windows\notepad.exe,0"
Ellink.description = "Acceso directo al Bloc de notas"
Ellink.workingdirectory ="C:\"
Ellink.save

Deshabilitar la paginación en el Registro

Este script modifica la clave Memory Management en el Registro de Windows y cambia el valor DWORD: DisablePagingExecutive en 1
Dim wshShell, RegKey
Set wshShell = Wscript.CreateObject("Wscript.Shell")
msgIntro = msgBox("Este scrip deshabilitara la paginación del nucleo" & vbCrlf & "Desea continuar?", vbYesNo+vbQuestion)
If msgIntro = vbNo then Wscript.Quit
RegKey = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\"
wshShell.regWrite RegKey & "DisablePagingExecutive", 00000001, "REG_DWORD"
Set objWshell = Nothing
msgBox "Hecho" & vbCrlf & "Otros scripts en http://norfipc.com "
Wscript.Quit

Una opción muy práctica, es la de tener disponible en el menú Nuevo del menú contextual (el menú que aparece al dar un clic derecho con el ratón), "Nuevo archivo VBScript", de esa manera podremos de forma similar a crear un nuevo archivo de texto o una nueva carpeta, crear un archivo VBS en blanco.
Para tener dicha opción es necesario crear una nueva clave en el Registro de Windows o descargar un archivo REG para crearla con solo dos clics.
Puedes leer como hacerlo en la siguiente página de este sitio y descargar dicho archivo REG:
Crear nuevas entradas en el menú Nuevo del clic derecho del ratón



Crear una página web incluyendo una función de VBScript


Puedes usar el siguiente código de muestra, para crear una página web que posee un botón, desde el cual se puede abrir el Panel del Control del equipo donde se utilice.
Recuerda que solo será funcional en Internet Explorer.
Para usar el código cópialo y pégalo en el Bloc de notas. Guarda el archivo con cualquier nombre, pero con cualquiera de las extensiones de archivo: HTML o HTM
<html>
<head>
<title>Abrir Panel de control</title>
</head>
<body>

<script type="text/vbscript"> 
function pcontrol()
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "explorer.exe shell:ControlPanelFolder"
End Function
</script>
<input type="button" value="Panel de control" onclick="pcontrol()">

</body>
</html>

Crear una aplicación HTA incluyendo una función de VBScript


Puedes usar el siguiente código de muestra, para crear una aplicación o página HTA, desde la cual se puede abrir el Panel del Control del equipo donde se utilice.
Para usar el código cópialo y pégalo en el Bloc de notas. Guarda el archivo con cualquier nombre, pero con la extensión de archivo: .HTA
<html>
<head>
<title>Mi HTA</title>

<script language="VBScript">
self.ResizeTo 480, 320
</script>

<script type="text/vbscript"> 
Sub pcontrol()
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "explorer.exe shell:ControlPanelFolder"
End Sub
</script>

<style>
body {background-color:black;}
</style>	 
	 
</head>
<body> 
<div align="center">
<br>
<input type="button" value="Panel de control" onclick="pcontrol()">
<br><br>
<input type="button" value="CERRAR" onClick="self.close()">

</body>
</html>
Para encontrar más información, para conocer cómo crear aplicaciones HTA, lee la siguiente página: Como crear tu propia página o aplicación HTA
VBScript puede ser muy útil también para modificar claves y valores del Registro de Windows, para conocer más y probar varios códigos de ejemplo, lee la siguiente página:
Modificar el Registro de Windows usando scripts creados en VBScript

Páginas relacionadas