2. Contextos de execução do VBSCRIPT
2.1. Introdução
Um programa VBScript não é executado diretamente no Windows, mas sim dentro de um contentor que lhe fornece um contexto de execução e vários objetos específicos. Além disso, o programa VBScript pode utilizar objetos disponibilizados pelo sistema Windows, conhecidos como objetos ActiveX.
![]() |
Neste documento, utilizaremos dois contentores: o Windows Scripting Host, comummente designado por WSH, e o navegador Internet Explorer, doravante designado por IE. Existem muitos outros. Por exemplo, as aplicações do MS-Office são contentores para uma variante do VB chamada VBA (Visual Basic for Applications). Existem também muitas aplicações do Windows que permitem aos utilizadores ultrapassar as limitações da aplicação, permitindo-lhes desenvolver programas que são executados dentro da aplicação e utilizam os seus objetos específicos.
O contentor no qual o programa VBScript é executado desempenha um papel crucial:
- os objetos disponibilizados ao programa VBScript pelo contentor variam de um contentor para outro. Por exemplo, o WSH fornece a um programa VBS um objeto chamado WScript, que dá acesso, por exemplo, às partilhas de rede e impressoras da máquina anfitriã. O IE, por outro lado, fornece ao programa VBS um objeto chamado Document, que representa todo o documento HTML que está a ser visualizado. O programa VBS pode então manipular este documento. O Excel, por outro lado, fornece a um programa VBA objetos que representam pastas de trabalho, folhas de cálculo, gráficos, etc. — na verdade, todos os objetos tratados pelo Excel.
- Embora os objetos num contentor proporcionem a um programa VBScript todo o seu poder, podem, por vezes, limitar certas áreas da sua funcionalidade. Por exemplo, um programa VBScript em execução no navegador IE não pode aceder ao disco da máquina anfitriã, por razões de segurança.
Por conseguinte, ao abordar a programação VBScript, é necessário especificar em que contentor o programa está a ser executado.
No Windows, o VBScript não é a única linguagem que pode ser utilizada nos contentores WSH ou IE. Por exemplo, pode utilizar JScript (=JavaScript), PerlScript (=Perl), Python, etc. Muitas destas linguagens parecem, à primeira vista, superiores ao VBScript. No entanto, o VBScript tem algumas vantagens significativas:
- O VB e as suas variantes VBScript e VBA estão muito difundidos em máquinas Windows. Conhecer esta linguagem parece essencial.
- São os objetos disponíveis para um programa, e não a própria linguagem, que o tornam poderoso. Muitos desses objetos são fornecidos pelos contentores, e não pelas próprias linguagens.
Uma desvantagem do VBScript é que não é portátil para sistemas que não sejam Windows, como o Unix. Os seus concorrentes — JavaScript, Perl e Python — são. Se precisar de trabalhar em sistemas heterogéneos, pode ser benéfico ou mesmo essencial utilizar a mesma linguagem em diferentes sistemas.
2.2. O Contentor WSH
O contentor WSH (Windows Scripting Host) permite que programas escritos em várias linguagens — como VBScript, JavaScript, PerlScript, Python e outras — sejam executados no Windows. Existe uma norma que deve ser seguida para que uma linguagem possa ser utilizada no WSH. Qualquer linguagem que cumpra esta norma é elegível para execução no WSH. É concebível que a lista de linguagens que funcionam no WSH venha a aumentar. Um contentor fornece aos programas que executa objetos que lhes conferem o seu verdadeiro poder. Isto tende a esbater as diferenças entre as linguagens, uma vez que todas utilizam o mesmo conjunto de objetos. A escolha de uma linguagem em detrimento de outra pode, assim, tornar-se uma questão de preferência pessoal, em vez de desempenho.
Os programas no WSH são executados utilizando dois executáveis: wscript.exe e cscript.exe. O wscript.exe encontra-se normalmente no diretório de instalação do Windows, geralmente referido como %windir%:
C:\ >echo %windir%
C:\WINDOWS
C:\>dir c:\windows\wscript.exe
WSCRIPT EXE 123 280 19/09/01 11:54 wscript.exe
L'exécutable cscript.exe se trouve lui sous %windir%\command :
C:\>dir c:\windows\cscript.* /s
Répertoire de C:\WINDOWS\COMMAND
CSCRIPT EXE 102 450 26/06/01 17:49 cscript.exe
O «w» em wscript significa Windows, e o «c» em cscript significa consola. Um script pode ser executado utilizando wscript ou cscript. A diferença reside na forma como as mensagens são apresentadas no ecrã:
- o wscript exibe-as numa janela
- o cscript exibe-as no ecrã
Aqui está um script chamado hello.vbs que exibe «hello» no ecrã:
![]()
Vamos abrir uma janela do DOS e executá-lo sucessivamente com o wscript e o cscript:
DOS>wscript coucou.vbs

DOS>cscript coucou.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
coucou
A diferença entre os dois modos é claramente visível acima. Neste documento, utilizaremos quase exclusivamente o modo de consola do cscript. Este é o modo adequado para as chamadas aplicações «em lote», ou seja, aplicações sem interação do utilizador através do teclado. Observe dois pontos nos resultados anteriores:
- Partimos do princípio de que os ficheiros executáveis wscript.exe e cscript.exe se encontravam ambos no «PATH» da máquina, o que permite que sejam executados simplesmente digitando os seus nomes. Se não fosse esse o caso, teríamos de escrever aqui:
- Note que a versão do WSH utilizada neste exemplo e ao longo do resto do documento é a versão 5.6.
- O ficheiro fonte do script tem a extensão .vbs. Esta é a extensão para um script VBScript; um script JavaScript é identificado pela extensão .js.
O programa cscript possui várias opções de execução, que podem ser visualizadas executando o cscript sem argumentos:
O argumento //nologo suprime a exibição do banner do WSH:
2.3. A estrutura de um script WSH
Acabámos de ver o nosso primeiro script: hello.vbs
![]()
Mencionámos que a extensão de ficheiro .vbs indica um script VBScript. Isto não é um requisito. Poderíamos ter colocado o script num ficheiro com a extensão .wsf, na seguinte forma mais complexa:

A execução deste script produz o seguinte resultado:
Um script WSH pode misturar linguagens:

A execução deste script produz o seguinte:
Vamos destacar os seguintes pontos:
- O contêiner WSH não está vinculado a uma linguagem específica. Um script WSH pode misturar linguagens dentro de um arquivo com a extensão .wsf
- O script é então delimitado pelas tags <job id="..."> ... </job>
- Dentro da aplicação (=job), as linguagens utilizadas pelas diferentes secções de código são marcadas com <script language="...."> .... </script>
- Esta linguagem de marcação tem um nome: XML, abreviatura de eXtended Markup Language. O XML não define quaisquer tags por si só, mas sim regras para organizar as tags. Aqui, devemos, portanto, dizer que a linguagem de marcação utilizada num script WSH segue o padrão XML.
Daqui em diante, utilizaremos exclusivamente VBScript em ficheiros .vbs.
2.4. O objeto WSCRIPT
O contentor WSH fornece aos scripts que executa um objeto chamado wscript. Um objeto tem propriedades e métodos:
![]() |
Um objeto Obj possui propriedades Pi que determinam o seu estado. Assim, um objeto termómetro pode ter uma propriedade de temperatura. Esta propriedade é um aspeto do estado do termómetro. Outro poderia ser a temperatura máxima Tmax que ele consegue suportar.
O objeto Obj pode ter métodos Mj que permitem que agentes externos:
- determinar o seu estado
- alterar o seu estado
Assim, o nosso termómetro, se for eletrónico, poderia ter um método turnOn que o ligasse, outro turnOff que o desligasse e outro display que mostrasse a temperatura de equilíbrio assim que esta fosse atingida. Em termos de programação, um método é uma função que pode aceitar argumentos e devolver resultados.
Em VBScript, as propriedades Pi de um objeto Obj são escritas como Obj.Pi, e os métodos Mj são escritos como Obj.Mj. O objeto wscript no WSH é um objeto importante pelos métodos que disponibiliza aos scripts. Por exemplo, o seu método echo permite-lhe exibir uma mensagem. A sintaxe para este método é a seguinte:
Os valores dos argumentos arg1, arg2, ..., argn são então exibidos numa janela (quando executado via wscript) ou no ecrã (quando executado via cscript no DOS).
2.5. O Contêiner do Internet Explorer
Mencionámos anteriormente que o Internet Explorer pode funcionar como um contentor para um VBScript. Vamos demonstrar isto com um exemplo simples. Abaixo encontra-se uma página HTML (HyperText Markup Language) chamada coucou2.htm que não contém qualquer VBScript.
21

Carregá-la diretamente no Internet Explorer (Ficheiro/Abrir) produz os seguintes resultados:
![]() |
O conteúdo do ficheiro coucou2.htm mostra-nos que o HTML é uma linguagem de marcação. Conhecer HTML significa conhecer estas tags. O seu principal objetivo é indicar ao navegador como apresentar um documento. O HTML não segue rigorosamente a norma XML, mas é semelhante a ela.
No ficheiro coucou2.htm, existem duas informações identificadas com os números 1 e 2. Também as incluímos na apresentação final. A tag <title>...</title> fez com que a informação 1 fosse colocada na barra de título do navegador, e a tag <body>..</body> fez com que a informação 2 fosse colocada na área de conteúdo do navegador.
Não vamos aprofundar mais o HTML. Vamos modificar o ficheiro coucou2.htm adicionando um VBScript e renomeá-lo para coucou1.htm:

O VBScript foi colocado dentro das tags <head>...</head>. Poderia ter sido colocado noutro local. Apresenta «hello» quando a página é carregada pela primeira vez. Aqui, o navegador deve ser o Internet Explorer, uma vez que apenas este navegador é um contentor predefinido para VBScripts. A apresentação resultante é a seguinte:

seguido da exibição normal da página:

O script executado foi o seguinte:
![]()
Enquanto o contentor WSH fornecia ao script um objeto chamado wscript que permitia a saída utilizando o seu método echo, aqui o IE fornece ao script um objeto window que permite a saída utilizando o método alert. Assim, para exibir «hello», escrevemos wscript.echo «hello» no WSH e window.alert «hello» no IE. Podemos também demonstrar aqui que, de facto, é possível utilizar várias linguagens dentro do contentor do IE. Vamos revisitar o exemplo já apresentado no WSH numa página chamada hello3.htm:

Quando o IE carrega esta página, apresenta primeiro três janelas de informação:
![]() | ![]() | ![]() |
antes de exibir a página final:

2.6. Ajuda do WSH
O WSH inclui um sistema de ajuda normalmente localizado na pasta «C:\Program Files\Microsoft Windows Script\ScriptDocs». Na versão 5.6 do WSH, o ficheiro de ajuda chama-se «SCRIPT56.CHM». Basta clicar duas vezes neste ficheiro para aceder à ajuda. Pode ser útil ter um atalho para este ficheiro no ambiente de trabalho.
Depois de aberta, verá algo semelhante a isto:

Contém ajuda para o contentor WSH, bem como para as linguagens VBScript e JavaScript. É uma ferramenta indispensável tanto para programadores iniciantes como para experientes. Existem várias formas de trabalhar com esta ajuda:
- Não tem a certeza do que procura. Apenas quer explorar o que está disponível. Nesse caso, pode utilizar o separador «Índice» acima. Por exemplo, pode ver o que está disponível para VBScript:

Encontrará muita informação na ajuda do VBScript que não está incluída neste documento.
- Pode pesquisar algo específico, como a forma de utilizar a função MsgBox do VBScript. Nesse caso, utilize o separador «Pesquisar»:

A ajuda apresenta todos os tópicos relacionados com o termo de pesquisa. Geralmente, os primeiros tópicos sugeridos são os mais relevantes. É o que acontece aqui, onde o primeiro tópico sugerido é o correto. Basta clicar duas vezes nele para ver as informações desse tópico:






