You are on page 1of 131

92 parte I Apresentando o Microsoft VBSCRIPT

Tabela 4.2 Funções VBScript ( contínuo)

Função Descrição

bronzeado função trigonométrica que retorna a tangente do argumento

Tempo Retorna uma variante do subtipo Encontro que foi definido igual ao horário atual

do sistema

Cronômetro Retorna um valor que representa o número de segundos que se passaram desde a

meia-noite

TimeSerial Retorna uma variante do subtipo Encontro que foi definido como igual a contendo o

especificado hora, minuto e segundo

Valor do tempo Retorna uma variante do subtipo Encontro que foi definido usando o tempo especificado

guarnições Retorna uma string após a remoção de qualquer líder ou espaços à direita

Digite o nome Retorna uma string que especificado as informações variante subtipo sobre a

variável especificada

Ubound Retorna a maior subscrito para a dimensão matriz especificada

ucase Retorna uma seqüência de letras maiúsculas

VarType Retorna uma string que especificado as informações variante subtipo sobre a

variável especificada

dia da semana Retorna um número inteiro na forma de 1 a 7, que representa um determinado dia

numa semana

WeekdayName Retorna uma cadeia que identifica um determinado dia da semana

Ano Retorna um número especificando o ano

Como um exemplo rápido do benefício de usar um built-in função de VBScript para poupar tempo e simplificar
suas VBScripts, olhar para a função personalizada seguinte, que consiste em cinco declarações VBScript.

SqrRootSolver função ()

intUserInput = InputBox ( “Digite um número”, “Função Personalizada Raiz quadrada”) X = 1

Para Contador = 1 a 15

X = X - ((^ 2 X - intUserInput) / (2 * X)) Próximo


PROCEDIMENTOS Capítulo 4 93

MsgBox “A raiz quadrada de“& intUserInput & “é“& Função X End

Os cinco declarações contidas na função pedir que o usuário digite um número e, em seguida, usar um A
seguir loop para determinar a raiz quadrada desse número usando alguma matemática bastante

sofisticado. As figuras 4.6 e 4.7 mostram a operação desta função.

FIGURA 4.6 Criar uma função personalizada que determina a raiz quadrada de um número de entrada

Figura 4.7 Exibindo os resultados do cálculo de raiz quadrada

Usando built-in do VBScript SQR () função, você pode executar a mesma tarefa com apenas duas linhas de código,

como mostrado abaixo.

UserInput = InputBox ( “Digite um número”, “Calculadora Raiz Quadrada”) MsgBox “A raiz quadrada

de“& UserInput & “é“& Sqr (UserInput)

Não só usando o built-in VBScript SQR () função de reduzir o número de linhas de código, mas
também reduz a complexidade do script, reduzindo assim a quantidade de tempo que leva a
desenvolver-lo.

resumo
Neste capítulo, você aprendeu a melhorar suas VBScripts, organizando-os em sub-rotinas e
funções. Isto incluiu o desenvolvimento de uma compreensão da
94 parte I Apresentando o Microsoft VBSCRIPT

diferenças entre estes dois tipos de procedimentos e como aproveitar o poder ea conveniência fornecidos pela
coleta built-in de VBScript de funções. Além de fazer os scripts mais fácil de ler e manter, procedimentos
proporcionam um mecanismo para limitar o âmbito variável. Você também aprendeu a chamar procedimentos
VBScript usando manipuladores de eventos a fim de desenvolver VBScripts que podem reagir de forma dinâmica
tanto para a atividade do usuário e do navegador.
capítulo 5
Arrays
você mary meio de armazenar
p a este ponto, todainformação natem-se
a discussão memória durante
centrado a execução
sobre o uso dedo script. As
variáveis variáveis
​como o pri- ​são limitados em

sua capacidade de lidar eficazmente grandes quantidades de dados. Os scripts são geralmente concebidos para

processar dados que são relacionados de algum modo. VBScript proporciona a matriz de construir como um meio de

controlar de forma mais eficiente de grandes quantidades de dados relacionados. Neste capítulo, você vai aprender

como trabalhar com matrizes tridimensionais e multidimensionais individuais. Além disso, você vai aprender várias

técnicas para redimensionar matrizes e como processar e apagar seu conteúdo.

Armazenar dados relacionados em Arrays


Normalmente, scripts de processar dados que estão relacionados de alguma forma. Quando a quantidade de dados a

serem processados ​é relativamente pequeno, ele pode ser armazenado em variáveis ​individuais. No entanto, como a

quantidade de dados processados ​por scripts cresce, torna-se cada vez mais difícil contar com variáveis. Por exemplo, um

script pode precisar para processar uma coleção de nomes de usuário. Definindo 100 nomes de variáveis ​únicas seria um

processo árduo. Em vez disso, o VBScript fornece matrizes como uma construo para o armazenamento de grandes

quantidades de dados relacionados. A ordem é uma lista indexada de dados relacionados. Arrays fornecer a capacidade

de armazenar peças relacionadas de informação de uma forma que é fácil de gerir. A maioria das matrizes são

constituídas por uma única dimensão e pode ser pensado como uma tabela única coluna. matrizes VBScript são à base

de zero, o que significa que o primeiro elemento é sempre atribuído um número de índice de 0. O segundo elemento

armazenados na matriz é atribuído um número de índice de 1, e assim por diante. Especificando o nome de uma matriz e

um número de índice, você pode fazer referência a qualquer elemento armazenado dentro do array. No entanto, as

matrizes VBScript não estão limitados a uma única dimensão. Por exemplo, uma matriz bidimensional VBScript pode ser

pensado como uma tabela que consiste em múltiplas colunas e linhas, como representado na Figura 5.1.

Como dimensões adicionais são adicionados, matrizes tornar-se mais complexo. Por exemplo, uma matriz
tridimensional pode ser pensado como um cubo. Qualquer coisa além de três dimensões é difícil para a maioria
das pessoas para conceituar e é igualmente difícil
ARRAYS capítulo 5 97

cust_no cust_name Cust_Phone

Customer1 0,0 1,0 2,0

Customer2 0,1 1,1 2,1

Customer3 0,2 1,2 2,2

FIGURA 5.1 Examinando a estrutura de uma matriz bidimensional

representar graficamente. Felizmente, apesar de VBScript pode suportar matrizes com até 60 dimensões, a maioria

das situações de chamada apenas para uma ou duas matrizes dimensionais. Cada elemento em uma matriz pode

conter um valor. Para matrizes unidimensionais, um elemento é uma linha na tabela ou coluna. Para matrizes

bidimensionais, um elemento é a intersecção de uma linha e uma coluna.

Trabalhando com unidimensional Arrays


Um vetor de dimensão única é usado para armazenar coleções de dados relacionados, tais como os nomes de uma

coleção de arquivos, usuários ou clientes. matrizes VBScript são à base de zero. Portanto, o primeiro elemento

armazenado em uma matriz unidimensional é atribuído um índice de posição 0. O comprimento efectivo de uma

matriz é igual ao número de elementos na matriz menos um.

Definindo unidimensional Arrays


VBScript apoia a criação de ambos os arrays estáticos e dinâmicos. UMA estático
matriz é um cujo comprimento é definido antecipadamente e não pode ser alterado. UMA dinâmico

array, por outro lado, pode ser redimensionada tantas vezes quanto necessário. Você pode definir uma matriz estática

usando o escurecer palavra-chave. A sintaxe para o escurecer indicação quando utilizado para definir matrizes é descrito a

seguir.

escurecer ArrayName (dimensões)


98 parte I Apresentando o Microsoft VBSCRIPT

ArrayName é o nome atribuído à matriz, e dimensões é uma lista separada por vírgulas que especifica
o número de dimensões na matriz, bem como o seu comprimento.

astrCustomerList dim (4)

A declaração anterior define uma matriz chamada astrCustomerList que pode armazenar até cinco
elementos (ou seja, elementos de 0 a 4).

GORJETA

Para fazer matrizes destacam-se outras variáveis, desenvolver uma convenção de nomenclatura única para eles.
Neste livro, a letra minúscula uma é anexado ao início de nomes de matriz, seguido por um de três caracteres
descrição denominada húngara do tipo de dados armazenados na matriz e um ou mais descritivos palavras que
identificam o conteúdo da matriz. No caso do exemplo anterior, o astrCustomerList matriz contém dados de cadeia
que representam os nomes de clientes.

Preencher uma única dimensão-matriz


Quando uma matriz foi definida, você pode começar a armazenar elementos nele. Por exemplo, as seguintes
declarações criar uma matriz chamada astrCustomerList e atribuir dados para cada um dos seus cinco elementos.

astrCustomerList dim (4) astrCustomerList (0) = “XYZ”

astrCustomerList (1) = “ABC Co.” astrCustomerList (2) =

“Acme Inc.” astrCustomerList (3) = “A & B Corp”

astrCustomerList (4) = “ ZZZ Enterprises”

Se você deseja que o usuário fornecer dados para a matriz, você pode recolhê-lo como demonstrado abaixo.

astrCustomerList dim (4)

Para i = 0 a 4

astrCustomerList (i) = InputBox ( “Digite um nome do cliente.”) Next


ARRAYS capítulo 5 99

Um ciclo tem sido criada para iterar cinco vezes (0-4). Ele usa o VBScript
Caixa de entrada() função para pedir ao utilizador para digitar o nome de um cliente em cada iteração do circuito

fechado, tal como demonstrado na Figura 5.2. Em seguida, armazena os valores digitados pelo usuário na matriz,
associando o valor de Eu com um número de índice na matriz.

Figura 5.2 Preencher uma matriz com a entrada de utilizador

Processamento de uma única dimensão-matriz


Há um par de diferentes técnicas que você pode usar para acessar o conteúdo de uma matriz. Isto inclui o
acesso a elementos específicos referenciando o seu número e índice de criação de circuitos que
percorrer todos os elementos armazenados dentro de uma matriz. Ambas as técnicas são revistas nas
seções que se seguem.

Acesso direto
Uma vez que uma matriz foi preenchida com os dados, você pode processá-lo. Uma maneira de aceder ao conteúdo de

matriz é para especificar o número de índice de um elemento de matriz específico, tal como demonstrado abaixo.

astrCustomerList dim (4)

astrCustomerList (0) = “XYZ” astrCustomerList (1) = “ABC”

astrCustomerList Co. (2) = “Acme Inc.” astrCustomerList

(3) = “A & B Corp” astrCustomerList (4) = “ZZZ Empresas”

MsgBox “O terceiro cliente é“& astrCustomerList (2)

A Figura 5.3 mostra a saída exibida por este certificado.


100 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 5.3 O acesso a um elemento específico armazenado em uma matriz

For Each ... Next


Processar os conteúdos de uma matriz especificando elementos individuais não é geralmente prático. Em
vez disso, você pode criar um For Each ... Next loop que gira embora a matriz, o que lhe permite processar
programaticamente cada elemento armazenados na matriz. A sintaxe do For Each ... Next laço é delineado
abaixo.

Para cada elemento Em grupo

Afirmações . . .

Próximo [ elemento]

Elemento é uma variável usado para controlar o ciclo, pois itera através da matriz.
Grupo especifica o nome da matriz a ser processado. Afirmações são as instruções que irão ser

utilizados para processar o conteúdo da matriz. o For Each ... Next itera ciclo até que cada elemento

armazenados dentro da matriz é processado como demonstrado no exemplo seguinte.

<HTML>

<HEAD>

<TITLE> Script 5.1 Utilização da For ... Each ... Next loop para processar um

array </ TITLE> </

HEAD>

<BODY>

<Script language =”VBScript”>

Option Explicit

i Dim

astrCustomerList dim (4)

astrCustomerList (0) = “XYZ”


ARRAYS capítulo 5 101

astrCustomerList (1) = “ABC” astrCustomerList Co. (2) =

“Acme Inc.” astrCustomerList (3) = “A & B Corp”

astrCustomerList (4) = “ZZZ Empresas”

Document.Write “<B>” & “Contatos de clientes:” & “</ B>“& ‘<BR>’

Para cada i Em astrCustomerList

Document.Write i & “<BR>” Next

</ SCRIPT>

</ BODY> </

HTML>

Como você pode ver, um VBScript foi incorporado na secção do corpo de uma página HTML. Esse
script começa definindo uma matriz chamada astrCustomerList
que pode armazenar até cinco elementos. Os próximos cinco declarações armazenar valores em cada
elemento da matriz. Em seguida, uma Document.Write declaração é usado para exibir um título de coluna na
página da Web. Finalmente, um For Each ... Next laço é usado para percorrer a matriz e mostrar o seu
conteúdo, que são representados pela variável Eu. A Figura 5.4 mostra a saída criado quando esta página
HTML é carregado.

NOTA

Documento é um objeto de navegador que representa a página HTML carregado no momento. o


Documento objecto tem um número de métodos e propriedades associadas com ela, incluindo o Escrever() método,
que fornece a capacidade de exibir o texto diretamente em páginas HTML. Para mais informações sobre o Documento
objeto, consulte o Capítulo 8, “VBScript e Internet Explorer”.
102 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 5.4 Usando um For Each ... Next loop para processar todos os elementos armazenados em uma matriz

NOTA

Mais informações sobre como trabalhar com o For Each ... Next laço está disponível no capítulo 3, “A lógica
condicional e Estruturas iterativos.”

Usando a função UBound


VBScript fornece duas funções que permitem que você programaticamente determinar os limites
superior e inferior de uma matriz. Estes são o LimiteSup () e LBound ()
funções. o LBound () função executa novamente o valor do limite inferior (isto é, o seu elemento mais baixo) de uma

matriz. No entanto, como VBScript loops são sempre baseada em zero, essa função é de pouco valor.

NOTA

VBScript é parte da família Visual Basic de linguagens de programação. As outras línguas desta família são Visual Basic e Visual Basic

for Applications. VBScript representa um subconjunto dessas outras línguas. No Visual Basic e Visual Basic for Applications, os

programadores têm a capacidade de atribuir de uma variedade limite inferior, enquanto que no VBScript que é sempre definido como

zero. Portanto, embora seja útil em programas de Visual Basic e Visual Basic for Applications, o LBound () função é redundante em

VBScript.
ARRAYS capítulo 5 103

o LimiteSup () função, por outro lado, tem mérito. Ele é usado para recuperar o valor de limite superior (o
seu elemento mais alto) de uma matriz .A sintaxe do LimiteSup ()
função, quando usadas para processar um conjunto de dimensão única, é descrita abaixo.

UBound ( ArrayName)

ArrayName é o nome da matriz. o LimiteSup () função é normalmente usado como mostrado abaixo.

x = LimiteSup ( ArrayName)

O valor atribuído ao X é igual a um menos o número real de elementos na matriz. Por conseguinte, para
determinar o número de elementos armazenados na matriz, adicionar 1 para o valor devolvido pela LimiteSup (), como
mostrado abaixo.

x = LimiteSup ( ArrayName) + 1

Por exemplo, o seguinte usa o VBScript LimiteSup () função para terminar a execução de um A seguir ciclo
quando o processamento de uma matriz.

'************************************************* ************************ 'Script Nome: 5.2.vbs script' Autor: Jerry

Ford 'Criado: 2003/01/17

'Descrição: Usando UBound () para determinar limite superior de um array' ************************************

*************************************

'Seção de inicialização

Option Explicit

Dim intArrayUpperBound, i, strDisplayString

astrCustomerList dim (4) astrCustomerList (0) = “XYZ”

astrCustomerList (1) = “ABC Co.” astrCustomerList (2) =

“Acme Inc.” astrCustomerList (3) = “A & B Corp”

astrCustomerList (4) = “ ZZZ Enterprises”

'Secção de Processamento Principal


104 parte I Apresentando o Microsoft VBSCRIPT

intArrayUpperBound = LimiteSup (astrCustomerList) Para i = 0 a

intArrayUpperBound

strDisplayString = strDisplayString & astrCustomerList (i) & ““& vbCrLf Seguinte

MsgBox “Contactos:” & vbCrLf & vbCrLf & strDisplayString, “Contatos do Cliente”

A Figura 5.5 mostra a saída exibida por este certificado.

Figura 5.5 usando o LimiteSup () funcionar para determinar limite superior de uma matriz

Você pode usar o LimiteSup () funcionar para impedir que um VBScript de tentar aceder a elementos
que não existem, assim, evitar a ocorrência de erros. Por exemplo, as seguintes declarações definir
uma matriz e preenchê-lo com cinco elementos. A última declaração tenta acessar um elemento que
não existe na matriz, resultando na mensagem de erro mostrada na Figura 5.6.

Figura 5.6 Um erro ocorre quando VBScript tenta acessar um elemento que está além do limite superior de um array

astrCustomerList dim (4) astrCustomerList (0) =

“ABC Corp” astrCustomerList (1) = “XYZ Inc”

astrCustomerList (2) = “Acme Co.”


ARRAYS capítulo 5 105

astrCustomerList (3) = “G & F Inc”

astrCustomerList (4) = “IV Mundo”

X = astrCustomerList (6)

Trabalhando com arrays multidimensionais


As matrizes multidimensionais fornecer uma ferramenta poderosa para o armazenamento e manipulação de grandes

quantidades de dados. As matrizes multidimensionais proporcionar a capacidade de armazenar informação, quando os

dados que são recolhidos consiste em diferentes tipos de dados relacionados. Por exemplo, um VBScript pode precisar de

armazenar inúmeras peças de informações sobre um cliente, incluindo o nome do cliente, número de cliente e número de

telefone, como demonstrado na Tabela 5.1.

Tabela 5.1 Organizador dados relacionados em um Two-Dimensional Nome da tabela Customer_

CUSTOMER_NO Customer_Phone

XYZ Corp. 12345 800-333-3333

ABC Co. 98765 877-444-4444

Acme Inc. 11122 800-555-5555

A & B Corp. 22233 888-888-9999

ZZZ Empresas 33.344 877-444-1111

Definindo Multidimensional Arrays


o escurecer afirmação pode ser utilizado para definir um array.When multidimensionais utilizados para definir matrizes

desta maneira, o escurecer declaração tem a seguinte sintaxe:

escurecer ArrayName (dimensões)

GORJETA

Outra forma de pensar de um matriz bi-dimensional é como uma matriz unidimensional que consiste de um
conjunto de matrizes unidimensionais.
106 parte I Apresentando o Microsoft VBSCRIPT

ArrayName é o nome da matriz que está sendo definido e dimensões é uma lista commaseparated de
subscritos, cada um dos quais define uma dimensão da matriz. Por exemplo, a seguinte declaração
define uma matriz bidimensional.

astrCustomerList dim (4,2)

o astrCustomerList matriz, tal como definido acima, será capaz de armazenar cinco linhas e três colunas valor de
informação, permitindo que ele para armazenar toda a informação listada na Tabela 5.1.

Preencher uma matriz multidimensional


Uma vez que uma matriz multidimensional é definida, que podem ser preenchidos. A fim de preencher um
elemento na matriz, você deve especificar o número de índice do elemento. No caso de uma matriz
bidimensional, o número de índice será especificado como ( X, Y),
o que representa um ponto de intersecção na matriz entre cada dimensão. O script a seguir

demonstra como atribuir os dados listados na Tabela 5.1 para o


astrCustomerList matriz.

Const cCustomerName = 0 const

cCustomerNo = 1 const

cCustomerPhone = 2

astrCustomerList dim (2,4)

astrCustomerList (cCustomerName, 0) = “XYZ” astrCustomerList (cCustomerNo, 0)

= 12345 astrCustomerList (cCustomerPhone, 0) = “800-333-3333”

astrCustomerList (cCustomerName, 1) = “ABC Co“astrCustomerList

(cCustomerNo, 1 ) = 98765 astrCustomerList (cCustomerPhone, 1) =

“877-444-4444” astrCustomerList (cCustomerName, 2) = “Acme Inc.”

astrCustomerList (cCustomerNo, 2) = 11,122 astrCustomerList (cCustomerPhone,

2) = “800-555-5555 ”astrCustomerList (cCustomerName, 3) =‘A & B

Corp.’astrCustomerList (cCustomerNo, 3) = 22233 astrCustomerList

(cCustomerPhone, 3) =‘888-888-9999’astrCustomerList (cCustomerName, 4)

=“ZZZ Empresas “astrCustomerList (cCustomerNo, 4) = 33344 astrCustomerList

(cCustomerPhone, 4) = “877-444-1111”
ARRAYS capítulo 5 107

GORJETA

Observe o uso das constantes nas três primeiras declarações no exemplo anterior. Ao atribuir constantes
para representar o valor de cada uma das três colunas na matriz, o código torna-se auto-documentado,
tornando-o mais fácil de ler e apoio.

Processamento Multidimensional Arrays


Uma vez que uma matriz multidimensional foi definido e preenchido com dados, ele pode ser processado. Como

matrizes estáticas, você pode especificar a localização de elementos individuais, a fim de acessar seus valores. No

caso de uma matriz bidimensional, isto significa que especifica ambas as coordenadas de linha e coluna, tal como

demonstrado abaixo.

WScript.Echo astrCustomerList (cCustomerName, 2) WScript.Echo

astrCustomerList (cCustomerPhone, 2)

No entanto, para processar matrizes multidimensionais com grandes quantidades de dados, será necessário para

estabelecer um ciclo, tal como demonstrado no seguinte exemplo.

'************************************************* ************************ 'Script Nome: 5.3.vbs script' Autor: Jerry

Ford 'Criado: 2003/01/17

'Descrição: Um exemplo matriz multidimensional

'************************************************* ************************

'Seção de inicialização

Option Explicit

Const cCustomerName = 0 const

cCustomerNo = 1 const

cCustomerPhone = 2

Dim intArrayUpperBound, i, strDisplayString

astrCustomerList dim (2,4)


108 parte I Apresentando o Microsoft VBSCRIPT

'Secção de Processamento Principal

LoadArray ()

intArrayUpperBound = LimiteSup (astrCustomerList, 2) Para i = 0 a

intArrayUpperBound

strDisplayString = strDisplayString & _

astrCustomerList (cCustomerName, i) & _

vbTab & astrCustomerList (cCustomerPhone, i) & ““& vbCrLf Seguinte

MsgBox strDisplayString,, “matriz multidimensional Exemplo”

'Secção Procedimento

LoadArray função ()

astrCustomerList (cCustomerName, 0) = “XYZ” astrCustomerList

(cCustomerNo, 0) = 12345 astrCustomerList (cCustomerPhone, 0) =

“800-333-3333” astrCustomerList (cCustomerName, 1) = “ABC Co.

astrCustomerList (cCustomerNo, 1) = 98765 astrCustomerList

(cCustomerPhone, 1) = “877-444-4444” astrCustomerList (cCustomerName, 2)

= “Acme Inc.” astrCustomerList (cCustomerNo, 2) = 11,122 astrCustomerList

(cCustomerPhone, 2) = “ 800-555-5555” astrCustomerList (cCustomerName, 3)

= ‘A & B Corp.’ astrCustomerList (cCustomerNo, 3) = 22233 astrCustomerList

(cCustomerPhone, 3) = ‘888-888-9999’ astrCustomerList (cCustomerName, 4) =

“ZZZ Empresas ”astrCustomerList (cCustomerNo, 4) = 33344 astrCustomerList

(cCustomerPhone, 4) =‘877-444-1111’End Function

O script começa definindo constantes para representar cada coluna numa matriz bidimensional. Em seguida,
as variáveis ​a serem utilizados pelo roteiro são definidos, seguindo-se a definição de uma matriz
bidimensional. Então o LoadArray () função é executada. Esta função atribui valores a cada elemento da matriz.
Finalmente, um circuito é configurado para processar o conteúdo da matriz. o Ubound () função é usada para
determinar a fronteira superior de segunda dimensão da matriz (o comprimento da dimensão de coluna). UMA Para
laço é então configurado para processar todos os elementos da matriz
ARRAYS capítulo 5 109

começando com o primeiro elemento ( 0) e passando o último elemento ( intArrayUpperBound). Como os


itera ansa, uma cadeia de caracteres de exibição está montado. Essa seqüência é composta pelos
valores armazenados na primeira ( astrCustomerList (CCU tomerName, i)) e terceiro ( astrCustomerList
(cCustomerPhone, i))
colunas da matriz. A última instrução no script exibe a cadeia totalmente montado usando o
VBScript MsgBox () função. A Figura 5.7 mostra a saída produzida por este certificado.

FIGURA 5.7 processamento de dados armazenados em uma matriz multidimensional

NOTA

A sintaxe do LimiteSup () função quando utilizados para trabalhar com matrizes multidimensionais é mostrado abaixo:

LBound (ArrayName dimensão)

ArrayName especifica a matriz a ser testado. o Dimensão parâmetro é opcional. Quando utilizado, o dimensão parâmetro
especifica a dimensão de matriz cujo limite superior deve ser devolvido. Especificar um para a primeira
dimensão, 2 para a segunda dimensão, e assim por diante.

Criação de matrizes dinâmicas


Em todos os exemplos anteriores, o número de elementos que eram para ser armazenado em cada matriz eram
conhecidos no momento da concepção. No entanto, no mundo real, é comum não saber o número de elementos
que precisam ser armazenados com antecedência. Por exemplo, se um script está configurado para coletar
informações sobre clientes usando o VBScript Caixa de entrada() função, muitas vezes não há maneira de saber
com antecedência quantos clientes diferentes o usuário irá inserir dados para. VBScript fornece uma solução para
este dilema, sob a forma de matrizes dinâmicas. Uma matriz dinâmica é um
110 parte I Apresentando o Microsoft VBSCRIPT

matriz que pode ser redimensionado durante a execução do script, o que significa que o seu tamanho pode ser

aumentado ou diminuído.

Definindo matrizes dinâmicas


Uma maneira de definir uma matriz dinâmica é usar o escurecer declaração para defini-la sem especificar o seu tamanho,

tal como demonstrado abaixo.

Dim astrCustomerList ()

Isto permite-lhe voltar mais tarde em seu script e redimensionar o tamanho da matriz usando o ReDim declaração,
como segue.

ReDim astrCustomerList (4)

Neste exemplo, a astrCustomerList matriz tiver sido redimensionado para que ele possa armazenar cinco
elementos. Outra opção quando se trabalha com matrizes dinâmicas é defini-los inicialmente com o ReDim declaração
em vez da escurecer declaração. Esta opção permite-lhe atribuir um tamanho inicial para a matriz. Não há
limite para o número de vezes que uma matriz dinâmica pode ser redimensionada.

Redimensionar unidimensional matrizes dinâmicas


Por padrão, todos os dados armazenados em uma matriz dinâmica é perdido quando é redimensionada. No entanto, você

pode evitar esse comportamento adicionando o Preservar palavra-chave para o

ReDim instrução, tal como demonstrado abaixo.

ReDim Preservar astrCustomerList (49)

No caso deste exemplo, a matriz astrCustomerList é redimensionada para permitir que ele armazene 50 elementos

sem fazendo-a perder quaisquer dados que ele continha antes de ser aumentado em tamanho.

NOTA

Se você redimensionar uma matriz dinâmica, tornando-a menor, todos os dados armazenados nos elementos do array que

foram removidos são perdidos, mesmo se você usar o Preservar palavra-chave quando o redimensionamento da matriz. Por

exemplo, se você definir uma matriz dinâmica de dimensão única, atribuir 10 elementos a ele, e depois redimensioná-la de

modo que só pode armazenar 5 elementos, em seguida, os últimos 5 elementos na matriz serão perdidos.
ARRAYS capítulo 5 111

O exemplo a seguir fornece uma demonstração simples de como redimensionar uma matriz dinâmica.

'************************************************* ************************ 'Script Nome: 5.4.vbs script' Autor: Jerry

Ford 'Criado: 2003/01/17

'Descrição: Uma demonstração de como redimensionar um array' **************************************

***********************************

'Seção de inicialização

Option Explicit

Dim strMessage, astrCustomerList, i

strMessage = “matriz demonstração dinâmica” & vbCrLf & vbCrLf

'Secção de Processamento Principal

DimTheArray ()

ReDimTheArray ()

DisplayResults ()

'Secção Procedimento

Função DimTheArray ()

ReDim astrCustomerList (2) astrCustomerList (0)

= “XYZ” astrCustomerList (1) = “ABC Co.”

astrCustomerList (2) = “Acme Inc.” End Function

ReDimTheArray função ()

ReDim Preservar astrCustomerList (4) astrCustomerList

(3) = astrCustomerList (4) = “ZZZ Empresas” “A & B Corp.”


112 parte I Apresentando o Microsoft VBSCRIPT

End Function

DisplayResults () função

Para cada i Em astrCustomerList

strMessage = strMessage & i & vbCrLf Seguinte

MsgBox strMessage, “Redimensionar uma matriz” & Space (25) End Function

Três declarações na Seção de Processamento Principal do script controlar a execução global do script

apelando três funções localizado na seção de Procedimento. o DimTheArray () função define uma matriz

dinâmica de dimensão única, com um tamanho inicial de três elementos. Em seguida, atribui valores a cada um

desses elementos. Em seguida, o ReDimTheArray () função executa. Esta função redimensions o tamanho da

matriz para permitir que ele armazenar até cinco elementos. o Preservar palavra-chave está incluído, a fim de

garantir que nenhum dados atualmente armazenados na matriz está perdido. A função, então atribui valores

para os dois novos elementos de matriz. A última função que é executada é DisplayResults (). Ele usa um For Each

... Next loop para processar o conteúdo da matriz recentemente expandido de modo que possa visualizar o seu

conteúdo. A Figura 5.8 mostra a saída exibida por este certificado.

FIGURA 5.8 Uma demonstração de como redimensionar uma matriz dinâmica

O exemplo anterior demonstra como redimensionar uma matriz dinâmica com base no pressuposto de que você sabe

de antemão qual é o tamanho da matriz terá de ser expandido para. No entanto, em muitos casos, você não vai saber

com antecedência o quão grande a matriz dinâmica deve ser. Este exemplo a seguir demonstra como escrever um

script que redimensiona dinamicamente uma variedade cada vez que um novo elemento é adicionado. Isto permite

que o script de aumentar o tamanho da matriz, conforme necessário para acomodar qualquer quantidade de dados é

necessária.
ARRAYS capítulo 5 113

'************************************************* ************************ 'Script Nome: 5.5.vbs script' Autor: Jerry

Ford 'Criado: 2003/01/17

'Descrição: redimensionamento uma matriz dinâmica com base na entrada de utilizador'

************************************** ***********************************

'Seção de inicialização

Option Explicit

Dim strUserInput, strMessage

ReDim astrCustomerList (0)

'Secção de Processamento Principal

CollectInputData ()

ProcessInputData ()

'Secção Procedimento

Função CollectInputData ()

Dim ii =

Não Enquanto UCase (strUserInput) <> “SAIR”

strUserInput = InputBox ( “Digite um nome de cliente”)

Se UCase (strUserInput) <> “SAIR” Então

astrCustomerList (i) = strUserInput Logo

Saia Do

End If
114 parte I Apresentando o Microsoft VBSCRIPT

i=i+1

ReDim Preservar astrCustomerList (i)

laço

End Function

Função ProcessInputData ()

Dim ii =

Para cada i Em astrCustomerList

strMessage = strMessage & i & vbCrLf Seguinte

MsgBox strMessage

End Function

O script começa definindo as suas variáveis ​e definir uma matriz chamada astrCustomerList com um
tamanho inicial de 0. Isto permite que a matriz para armazenar um único elemento. A lógica controle do
script está localizado na Seção de Processamento Principal, e consiste em duas chamadas de função. A
primeira função chamada é CollectInputData (). Esta função usa um Fazer enquanto circuito para controlar os
dados collection.The VBScript Caixa de entrada() função é usada para coletar a entrada de texto do usuário.
A coleta de dados ocorre até que o usuário digita a palavra Sair. o Ucase ()

função é utilizada para testar cada pedaço de dados digitados pelo usuário para procurar a palavra

Sair. Cada vez que uma nova entrada é digitado, o script atribui a ele como o último elemento na matriz e, em seguida,

redimensiona a matriz para acomodar um novo elemento.

GORJETA

o Ucase () função pode ser usada para converter texto em todas as letras maiúsculas. Isso permite que você execute uma
comparação todo o texto em maiúsculas sem se preocupar com o caso em que o usuário utiliza. Por exemplo, no script
anterior, o usuário pode digitar Desistir, desistir,
ou Sair para terminar o processo de entrada de dados.
ARRAYS capítulo 5 115

A última função chamada no script usa um For Each ... Next loop para processar cada elemento armazenados na matriz,

para construir uma corda de visualização, e para exibir os resultados.

Redimensionar multidimensionais matrizes dinâmicas


Ao preservar os dados armazenados em uma matriz multidimensional, apenas a última dimensão que é
definido pode ser redimensionada. Por exemplo, na matriz bidimensional apresentada no início deste
capítulo, um array foi criado para armazenar os nomes de clientes, números de clientes, e números de
telefone do cliente. Porque a segunda dimensão da matriz foi usado para armazenar números de telefone do
cliente, é a única dimensão que pode ser redimensionada. Felizmente, isso funciona bem neste caso, porque
é improvável que os clientes vão mudar seus nomes. Também é improvável que o número atribuído ao
cliente vai mudar. No entanto, o número de telefone do cliente pode mudar de tempos em tempos.

Como outro exemplo, considere a matriz bidimensional seguinte.

ReDim astrCustomerList (2,2)

A matriz definida por esta declaração pode ser visto como uma tabela composta por três colunas e três linhas. No

entanto, uma vez que apenas a última dimensão de uma matriz multidimensional pode ser redimensionada, apenas

os elementos armazenados na segunda dimensão da matriz pode ser resized.To redimensionar a matriz para conter

dados adicionais, você pode aumentar o tamanho de sua segunda dimensão como demonstrado abaixo.

ReDim astrCustomerList (2,9)

Esta declaração permite-lhe expandir o tamanho da segunda dimensão para armazenar 10 elementos.

Mantenha os seguintes pontos em mente ao redimensionar arrays multidimensionais.

◆ Você pode redimensionar uma matriz multidimensional, alterando tanto o


número de dimensões eo tamanho de cada dimensão, mas isso irá resultar na perda de
seus dados.

◆ Para evitar a perda de dados quando redimensionar uma matriz multidimensional, você

pode adicionar o Preservar palavra-chave para o ReDim declaração, mas ao fazê-lo, você limita a capacidade

de modificar a matriz para redimensionar apenas o comprimento da última dimensão.


116 parte I Apresentando o Microsoft VBSCRIPT

apagar Arrays
VBScript fornece a capacidade de apagar o conteúdo de uma matriz usando o Apagar
declaração. A sintaxe deste comando é descrito abaixo.

apagar arrayname

o Apagar declaração apaga o conteúdo de um array estático, mas não reduz o tamanho dos array.When usada
para apagar uma matriz dinâmica, o Apagar declaração apaga o conteúdo do array e desaloca todo o
armazenamento utilizado pela matriz, liberando assim memória.

Por exemplo, a seguinte declaração apaga o conteúdo de uma matriz chamada astrCustomerList.

apagar astrCustomerList

Usando funções de VBScript para trabalhar com Matrizes

VBScript fornece duas funções que são úteis ao trabalhar com matrizes. Estas funções são brevemente
abaixo definido.

◆ Array (). Recupera uma variante que contém uma matriz

◆ IsArray (). Oferece a capacidade de determinar se uma variável é uma


ordem

Usando a disposição VBScript () Função


o Array () função fornece uma ferramenta para matrizes que definem rapidamente. A sua sintaxe é descrito a seguir.

array ( arglist)

Arglist é uma lista separada por vírgulas de elementos a serem armazenados na matriz. E se

arglist é omitido, então um conjunto de comprimento zero está configurada. Caso contrário, o tamanho inicial da

matriz é determinado pelo número de elementos fornecidos na arglist.


Por exemplo, a seguinte declaração define uma matriz que contém cinco elementos.

astrCustomerList = Array ( “ABC Corp”, “XYZ Inc”, “Acme Co.”, “L & F Inc”, “IV World”)
ARRAYS capítulo 5 117

o Array () função permite reduzir o número de instruções necessárias para criar pequenas matrizes. Por
exemplo, a matriz acima poderia ter apenas como facilmente sido definido como mostrado abaixo.

ReDim astrCustomerList (4) astrCustomerList (0) = “XYZ”

astrCustomerList (1) = “ABC Co.” astrCustomerList (2) =

“Acme Inc.” astrCustomerList (3) = “A & B Corp”

astrCustomerList (4) = “ ZZZ Enterprises”

Usando o IsArray () Função


o VBScript IsArray () função é utilizado para testar se a variável especificada é uma matriz. Ele retorna um
valor de Verdade se a variável testada é uma matriz. Caso contrário, ele retorna um valor de Falso.

Exceto para matrizes, variáveis ​de VBScript são escalar, o que significa que eles só contêm um valor. Se um
VBScript tenta usar uma função relacionada com a matriz, tais como
LimiteSup () ou LBound () contra uma variável escalar, ocorre um erro, terminando a execução do script. Um

erro também ocorrerá se o script tentativas para tratar uma variável escalar como uma matriz especificando

um número de índice ao fazer referência a isso. Uma maneira de se proteger contra acidentalmente tentar

tratar uma variável escalar como se fosse uma matriz é a primeira prova-lo usando o IsArray () função. A sintaxe

do IsArray () função é descrita abaixo.

IsArray ( nome variável)

Por exemplo, as seguintes declarações definir uma matriz e, em seguida, demonstram como o uso IsArray
() função.

ReDim astrCustomerList (4) X = IsArray

(astrCustomerList) Se x = “True”, em

seguida,

MsgBox “Essa variável é uma matriz.” Else

MsgBox “Esta é uma variável escalar.” End If


118 parte I Apresentando o Microsoft VBSCRIPT

resumo
Neste capítulo, você aprendeu a trabalhar com uma única dimensão e arrays multidimensionais. Você também

aprendeu a trabalhar com arrays estáticos e dinâmicos. Além disso, você aprendeu técnicas diferentes para o

processamento de conteúdo da matriz, incluindo como acessar os dados armazenados nas células da matriz

específicas e como criar loops que iteratively processar o conteúdo de uma matriz inteira. Outros tópicos abordados

neste capítulo incluído como redimensionar matrizes, bem como a forma de ambos preservar e apagar seu

conteúdo.
Capítulo 6
Recolha de Dados,
Notificação e Relatório
de Erros
Eu n Neste
funções exibemcapítulo,
caixas devocê aprenderá
diálogo pop-upcomo o VBScript
que podem ser utilizados
Caixa depara e MsgBox
recolher
entrada() entrada() do utilizador e para

exibir a saída. Você também vai aprender a controlar a apresentação do texto dentro destas caixas de diálogo

pop-up, bem como a forma de interrogar a entrada especificada pelo usuário. Além disso, este capítulo irá apresentar

informações sobre tratamento de erros, incluindo como gerar mais mensagens de erro amigáveis.

Interagindo com usuários


Dependendo do ambiente de programação para o qual você está desenvolvendo seus VBScripts, você
tem um número de diferentes opções para a exibição de saída e interagir com os usuários. Por exemplo,
dentro de páginas HTML, você pode exibir a saída usando métodos fornecidos pela Janela e Documento objetos.
Estes métodos estão descritos na Tabela 6.1.

NOTA

o Janela e Documento objetos são objetos do navegador. o Janela objeto representa a janela do navegador
aberta no momento ou quadro. o Documento objeto representa a página HTML carregado no momento. Mais
informações sobre esses objetos está disponível no Capítulo 8, “VBScript e Internet Explorer.”

Tabela 6.1 objecto VBScript Cadeia Constantes

Método Descrição

Documento Escrever Exibe o texto diretamente em páginas HTML

Janela Alerta Exibe o texto em uma caixa de diálogo pop-up que exibe um Está bem botão

Pronto Exibe o texto em uma caixa de diálogo pop-up que exibe um campo e de entrada de texto Está

bem e Cancelar botões

confirme Exibe uma mensagem de texto em uma caixa de diálogo pop-up e requer a

usuário para fornecer confirmação, clicando em ambos os Está bem ou o

Cancelar botão

estado Exibe mensagens de texto na barra de status do navegador


COLETA DE DADOS, notificação e relatório de erros Capítulo 6 121

Quando desenvolver scripts para o WSH, os programadores têm a opção de exibir a saída usando
métodos fornecidos pelo WScript e WshShell objetos. Estes métodos são especificados abaixo.

◆ Eco(). Um método pertencente ao WScript objeto que exibe texto


mensagens em ambos o console do Windows ou em uma caixa de diálogo pop-up

◆ Aparecer(). Um método pertencente ao WshShell objeto que exibe


mensagens de texto em pop-up caixas de diálogo com controle sobre o ícone e seleção botão e a
capacidade de determinar o botão clicado pelo usuário

NOTA

o WScript e WshShell objetos são objetos WSH. o WScript objecto é o objecto de mais alto ou pai para
outros objectos WSH. o WshShell objeto fornece acesso a métodos e propriedades que podem ser usados
​para acessar o sistema Windows arquivo, registro e outros recursos do Windows. Mais informações sobre
esses objetos está disponível no Capítulo 9, “VBScript eo WSH.”

Além das opções de saída específicas do ambiente fornecidos pelo Internet Explorer eo WSH, o
VBScript fornece um par de funções que estão sempre disponíveis para a exibição de saída e recolher
a entrada do usuário. Estas duas funções são descritas abaixo.

◆ Caixa de entrada(). Exibe uma caixa de diálogo pop-up que recolhe a entrada de texto de

o usuário usando um campo de entrada de texto

◆ MsgBox (). Exibe uma caixa de diálogo pop-up que contém uma mensagem de texto,

um ou mais botões, e um ícone opcional As características e capacidades do Caixa de

entrada() e MsgBox () funções serão mais explorados durante todo o restante deste capítulo.

O InputBox () Função
o VBScript Caixa de entrada() função fornece a capacidade de solicitar que o usuário digite a entrada de dados
durante o roteiro execution.This permite desenvolver scripts que podem interagir diretamente com o usuário. o Caixa
de entrada() função exibe uma caixa de diálogo pop-up que tem os seguintes recursos:
122 parte I Apresentando o Microsoft VBSCRIPT

◆ Um campo de texto usado para coletar a entrada do usuário

◆ A capacidade de exibir uma mensagem de texto até 1.024 caracteres

◆ OK e botões que permitem ao usuário controlar o diálogo pop-up Anular


caixa

Definindo a função InputBox ()


A sintaxe do Caixa de entrada() função é descrita abaixo.

Resposta = InputBox (P rompt [, T itlebarmsg] [, Padrão] [, X pos]

[, Ypos] [, Hhelpfile, Contexto])

Resposta é uma variante com um subtipo de cadeia que armazena o texto fornecido pelo usuário. Pronto é

uma mensagem de texto até 1.024 caracteres, que fornece instruções e orientações para o usuário. Titlebarmsg
é opcional. Quando fornecido, ele exibe seu texto na barra de título da caixa de diálogo pop-up do. Se
omitido, a palavra “VBScript” será exibido na barra de título. Padrão é opcional. Quando usado, ele fornece
uma resposta padrão que é exibido automaticamente no campo de texto na caixa de diálogo pop-up do. posx
e yPos são medições opcionais especificados como twips. Quando usado, posx especifica a distância do lado
esquerdo da tela para o lado esquerdo da caixa de diálogo pop-up. yPos especifica a distância do topo da
caixa de diálogo pop-up para o topo da tela. Helpfile e Contexto são opcionais. Eles especificar a localização
de um arquivo externo, onde a ajuda sensível ao contexto está disponível.

NOTA

Twip é uma medição de espaço e representa 1/20 de um ponto ou de 1/1440 de uma polegada.

A declaração a seguir demonstra como usar o Caixa de entrada() função.

strUserName = InputBox ( “Digite seu nome”) MsgBox ( “Saudações“e

strUserName)

A primeira declaração neste exemplo exibe a caixa de diálogo pop-up mostrado na Figura 6.1. Como você
pode ver, ele exibe uma mensagem e espera que o usuário a qualquer tipo em um nome e clique no botão
OK ou cancelar a operação clicando no botão Cancelar.
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 123

Figura 6.1 usando o Caixa de entrada() funcionam para recolher dados de entrada do utilizador

o Caixa de entrada() função retorna o texto digitado pelo usuário quando o botão OK é clicado. No entanto,
se o usuário clica em OK sem digitar qualquer texto, ou se o usuário clica no Cancelar botão, uma cadeia de
comprimento zero é retornado (isto é, “”).
No exemplo anterior, os dados digitados pelo usuário é salvo como uma variante com um subtipo corda em
uma variável chamada strUserName. A Figura 6.2 mostra a caixa de diálogo pop-up exibida pela segunda
instrução mostrada acima.

FIGURA 6.2 Cumprimentando um usuário pelo nome

Caixa de entrada() parâmetros de função são sensíveis de posição. Se você não usar um parâmetro específico,

você deve substituir uma vírgula, a fim de continuar a adicionar outros parâmetros que seguem o parâmetro
omitido. Por exemplo, as seguintes declarações exibir a caixa de diálogo pop-up apresentados na Figura 6.3.
Este exemplo irá exibir uma mensagem e uma resposta padrão sem especificar qualquer texto de mensagem
para exibição na barra de título da caixa de diálogo pop-up do.

strFileName = InputBox ( “Por favor especifique um nome de arquivo temporário.”,”C: \ Temp”)

NOTA

Se você omitir o titlebarmsg parâmetro ao usar o Caixa de entrada() função, VBScript irá exibir a palavra
“VBScript” na barra de título da caixa de diálogo pop-up do.
124 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 6.3 usando o Caixa de entrada() função para exibir uma caixa de diálogo pop-up com uma resposta padrão

Validação de entrada
Os usuários podem ser completamente imprevisível. Por isso, é essencial que você interrogar e validar todos os
dados retornados pelo Caixa de entrada() função para garantir que ele está em conformidade com as exigências de
seus VBScripts. Por exemplo, você pode escrever um script em que você pretende coletar o nome do usuário.
No entanto, em vez de digitar um nome, o usuário pode executar uma das seguintes ações:

◆ Clique no botão Cancelar


◆ Pressione a tecla Esc

◆ Clique em OK sem digitar qualquer texto

Cada uma destas acções resulta em uma cadeia de comprimento zero. As declarações a seguir
demonstram como verificar a presença de dados ao usar o Caixa de entrada()
função.

strUserName = InputBox ( “Digite seu nome.”, “Questionário do Usuário”)

Se strUserName = “” Then

MsgBox “Você não forneceu qualquer informação!” Else

MsgBox “Greetings“e strUserName End If

A segunda instrução verifica para ver se os dados retornados pelo Caixa de entrada() função e
armazenado como strUserName é igual a “”.

O exemplo a seguir mostra outra maneira de ver se o utilizador tem quaisquer dados fornecidos para o Caixa
de entrada() função.

strChoice = InputBox ( “O que você prefere: jogos, utilitários ou outros?”) Se Len (strChoice) = 0 Then
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 125

MsgBox “Você não introduzir quaisquer dados.” End If

Neste exemplo, o VBScript Len () função é usada para ver se o valor armazenado no strChoice é de
comprimento zero. Às vezes, pode ser apropriado para fornecer uma resposta padrão no caso em que o
usuário não fornecer quaisquer dados, como demonstrado abaixo.

strChoice = InputBox ( “O que você prefere: jogos, utilitários ou outros?”) Se Len (strChoice) = 0 Then

strChoice = “Outros” End If

Neste exemplo, o valor de strChoice é automaticamente definida igual a De outros no caso em que o usuário
não digitar quaisquer dados. Haverá momentos em que fornecem uma resposta padrão não será suficiente.
Nestas circunstâncias, você pode envolver o
Caixa de entrada() função dentro de um loop que itera até que o utilizador fornece uma resposta adequada. Por

exemplo, as seguintes declarações usar um Fazer enquanto loop para forçar o utilizador escrever Sair quando
solicitado pelo Caixa de entrada() função de modo a sair do ciclo.

Não Enquanto UCase (strChoice) <> “SAIR”

strChoice = InputBox ( “O que você quer fazer?”)

Se UCase (strChoice) <> “SAIR” Então

MsgBox “Opção inválida. Por favor, especifique a sua seleção novamente.”Else

Saia Do

End If

laço

Neste exemplo, a UCase () função é usada para converter todas as respostas do usuário para maiúsculas. A
resposta do usuário é verificada para ver se a entrada correta foi fornecida.

VBScript fornece ferramentas para controlar o formato da mensagem de aviso exibida pelo Caixa de
entrada() função. Você pode usar qualquer uma das constantes VBScript listadas na Tabela 6.2 para

formatar a saída de texto.


126 parte I Apresentando o Microsoft VBSCRIPT

Tabela de Funções 6,2 VBScript Cadeia Constantes

Descrição

vbCr Executa uma operação de retorno do carro

vbCrLf Realiza um retorno de transporte e uma operação de alimentação de linha

vbLf Executa uma operação de mudança de linha

vbTab Realiza uma operação de guia horizontal

O exemplo a seguir demonstra como exibir um menu de opções usando o


Caixa de entrada() funcionar e então selecionar a ação apropriada com base na seleção do usuário.

intAnswer = InputBox ( “Digite o número de um dos“& _

“seguintes opções:” & vbCrLf & _

vbCrLf & vbTab & “- escolhas -” & vbCrLf & vbCrLf & _ “1. Ver informações de

copyright.”& VbCrLf & _“2. Ver informações sobre o script.”& VbCrLf & _“3. Exibir

informações de ajuda.”& vbCrLf,‘Lista de menus’) Se IsNumeric (intAnswer) Em seguida,

Select Case intAnswer

Caso 1

MsgBox “Copyright 2003, Jerry Lee Ford, Jr.” Caso 2

MsgBox “Este script demonstra como formatar texto em“& _

“InputBox () diálogos” Case 3

MsgBox “Para a visita ajuda adicional“& _

Caso “msdn.microsoft.com/scripting” Else

MsgBox “selecção inválido.” End Select

Else

MsgBox “As únicas opções válidas são 1, 2 ou 3.” End If


COLETA DE DADOS, notificação e relatório de erros Capítulo 6 127

A coerção de dados
VBScript só suporta o tipo de dados variante. No entanto, ele suporta vários subtipos variantes. VBScript
faz o seu melhor para determinar o tipo de dados armazenados em uma variável, a fim de associá-lo com
o subtipo de dados correto. Às vezes VBScript não vai identificar o subtipo dados da maneira em que você
deseja. Para remediar esta situação, o VBScript fornece duas maneiras de mudar subtipos de dados,
coerção implícita e coerção explícita.

coerção implícita
o Caixa de entrada() função só retorna dados de cadeia, independentemente do que o usuário entra no seu campo de

texto. No entanto, o VBScript fornece maneiras de contornar isso. Na maioria dos casos, VBScript é capaz de converter

automaticamente os dados armazenados em variáveis ​como exigido pela situação. Por exemplo, se um utilizador entra

o número 66 como entrada no campo de texto de um Caixa de entrada() caixa de diálogo pop-up, VBScript irá tratá-lo

como uma string equivalente a “66”. Se uma operação matemática é realizada que usa a variável, VBScript irá converter

automaticamente o seu subtipo para numérico. Isto é conhecido como

coerção implícita.

Usando coerção implícita, o seguinte VBScript é capaz de converter automaticamente qualquer número digitado pelo

usuário a partir de uma string para um valor numérico.

dblAnswer = InputBox ( “Introduzir o número”, “Exemplo Implícita coerção”) MsgBox NomeTipo

(dblAnswer) dblAnswer = 100 + dblAnswer MsgBox NomeTipo (dblAnswer)

NOTA

o VBScript Digite o nome() função utilizada no exemplo anterior retorna uma cadeia de caracteres que exibe o subtipo da
variável especificada. o Digite o nome() função pode retornar qualquer um dos seguintes cadeias.

◆ Byte

◆ número inteiro

◆ Longo

◆ solteiro

◆ em dobro
continuou
128 parte I Apresentando o Microsoft VBSCRIPT

NOTA ( contínuo)

◆ Moeda
◆ Decimal
◆ Encontro

◆ Corda
◆ boleano
◆ Esvaziar

◆ Nulo

◆ Objeto
◆ Desconhecido

◆ Erro

Quando executado, o segundo declaração neste exemplo apresenta o resultado mostrado na Figura 6.4,
provando que o Caixa de entrada() função sempre retorna um valor string.

FIGURA 6.4 o Caixa de entrada() função sempre retorna um valor de string

A terceira linha do script executa uma operação matemática, acrescentando 100 para o número
digitado pelo usuário. Usando coerção implícita, VBScript converte automaticamente o valor da variável
para uma variante com um subtipo da dupla. A saída exibida pela última linha no script, mostrado na
figura 6.5, mostra que a variável tenha sido convertida.

FIGURA 6.5 VBScript tenta automaticamente para converter uma variável a partir de um subtipo ao outro, conforme necessário pela situação
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 129

coerção explícita
Enquanto VBScript faz o seu melhor para ajustar automaticamente o subtipo de uma variável como cada
situação exige, pode haver ocasiões em que ele não consegue fazer o ajuste como se poderia esperar. Quando
isso acontece, você pode tentar usar coação explícita para forçar a conversão subtipo. VBScript fornece um
grande número de funções de conversão, como listados na Tabela 6.3.

Tabela 6.3 VBScript conversão da função funções

Descrição

Asc Retorna o código de caracteres ANSI da primeira letra em uma string

CBool Converte a uma variável de um boleano subtipo

CByte Converte a uma variável de um Byte subtipo

CCur Converte a uma variável de um Moeda subtipo

CDate Converte a uma variável de um Encontro subtipo

CDbl Converte a uma variável de um em dobro subtipo

Chr Retorna o caractere código de caracteres ANSI especificado

CInt Converte a uma variável de um número inteiro subtipo

CLng Converte a uma variável de um Longo subtipo

CSng Converte a uma variável de um solteiro subtipo

CStr Converte a uma variável de um Corda subtipo

feitiço Retorna uma string que representa o valor hexadecimal de um número

outubro Retorna uma string que representa o valor octal de um número

O exemplo a seguir demonstra a aplicação do CInt () função de conversão.

intUserNumber = InputBox ( “Digite um número entre 0 e 9”, _

"Digite sua resposta")

Se IsNumeric (intUserNumber) = “True” Então

intUserNumber = CInt (intUserNumber) Se Len

(intUserNumber) = 1, então

MsgBox “Você digitou“& intUserNumber Else


130 parte I Apresentando o Microsoft VBSCRIPT

MsgBox “selecção inválido!” End If Else

MsgBox “não-número inválido” End If

o Caixa de entrada() função é usada para solicitar que o usuário digite um valor entre 0 e 9. Para se certificar
de que o usuário digita um número e não uma letra ou caractere especial, o IsNumeric () função é usada. Se
um número é digitado, então o valor retornado por essa função será igual a Verdade. Neste caso, o CInt () função
é usada para coagir explicitamente o valor de entrada para um valor inteiro. Embora não seja estritamente
necessário, neste exemplo, o uso do CInt () função torna as intenções do programador mais clara.

NOTA

o IsNumeric () função retorna um valor booleano que determina se ou não o valor testado é um
número.

tipo incompatível
Se VBScript tenta executar uma operação em uma variável que não é suportado pelo seu subtipo, ocorre
um erro. VBScript não pode realizar uma comparação aritmética dos dados não numéricos. Por exemplo, o
seguinte script solicita ao utilizador que introduza um valor numérico entre 1 e 9.

intAnswer = InputBox ( “Digite o número entre 1 e 9”, “Lista de menus”)

Se intAnswer> 0 Then

Se intAnswer <10 Então

MsgBox “Você digitou“& intAnswer End If End If

Se o usuário digitar um número entre 1 e 9, é apresentada uma mensagem. Se o usuário digitar um número fora
deste intervalo, nada acontece. No entanto, se o usuário digitar uma letra ou caractere especial, em vez de um
valor numérico, um erro de incompatibilidade de tipo ocorre, como demonstrado na Figura 6.6.
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 131

FIGURA 6.6 Um erro de incompatibilidade de tipo ocorre quando VBScript tenta executar uma operação em uma variante que não é
suportado pelo seu subtipo

Para evitar a ocorrência de erros de incompatibilidade de tipo, você precisa executar validation.This entrada
normalmente envolve variáveis ​de teste para determinar a sua atribuição subtipo usando o Digite o nome() função
ou qualquer das funções de teste subtipo listadas na Tabela 6.4.

Tabela 6.4 Funções VBScript que a função Teste Variant subtipo

Descrição

IsArray Retorna um valor de Verdade ou Falso com base em se a variável especificada é uma matriz

IsDate Retorna um valor de Verdade ou Falso com base em se a variável especificada é uma data

Está vazia Retorna um valor de Verdade ou Falso com base em se a variável especificada foi inicializado

isFinite Retorna um valor de Verdade ou Falso com base em se o número especificado é finito

IsNaN Retorna um valor de Verdade ou Falso com base em se a variável especificada tem o NaN ( não um
número) valor

É nulo Retorna um valor de Verdade ou Falso com base em se a variável especificada contém quaisquer dados

IsNumeric Retorna um valor de Verdade ou Falso com base em se a variável especificada é numérico
132 parte I Apresentando o Microsoft VBSCRIPT

O MsgBox () Função
o Caixa de entrada() função fornece uma maneira conveniente de coletar dados cujo valor não pode ser determinado

com antecedência de usuários. Muitas vezes, porém, você precisa apresentar ao usuário uma gama limitada de

opções entre as quais você deseja permitir apenas uma seleção. Você pode realizar este tipo de interação com o

usuário usando o MsgBox ()

função. Como o Caixa de entrada() função, você pode usar as constantes string VBScript para controlar
a apresentação do texto exibido pelo MsgBox () função. Além disso, você tem controle sobre quais os
tipos de botões e ícones são exibidos.

Definindo a função MsgBox ()


A sintaxe do MsgBox () função é descrita abaixo.

MsgBox ( Pronto[, Botões] [, TitleBarMsg] [, Helpfile, Contexto])

Pronto é uma mensagem de texto até 1.024 caracteres, que fornece instruções e orientações para o usuário. botões

é uma especificação do valor que botões e ícones devem aparecer na caixa de diálogo pop-up. Titlebarmsg é

opcional. Quando fornecido, ele exibe seu texto na barra de título da caixa de diálogo pop-up do. Se omitido, a

palavra “VBScript” será exibido na barra de título. Helpfile e Contexto são opcionais. Eles especificar a

localização dos arquivos externos onde a ajuda sensível ao contexto está disponível. o MsgBox () função

fornece a capacidade de personalizar quatro recursos de caixa de diálogo pop-up. Estas características são

descritos abaixo.

◆ A combinação de botões para ser exibido

◆ O ícone a ser exibido


◆ O botão padrão
◆ A modalidade da caixa de diálogo pop-up

Cada uma dessas opções é descrito nas tabelas que se seguem. Você tem a oportunidade de especificar
uma opção de cada tabela ao usar o MsgBox () função para exibir uma caixa de diálogo pop-up box.Table 6,5
listas os diferentes botões que podem ser exibidos pela MsgBox () função.
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 133

Tabela 6.5 VBScript MsgBox () botões de função Constante

Valor Descrição

vbOKOnly 0 exibe o Está bem botão

vbOKCancel 1 exibe o Está bem e Cancelar botões

vbAbortRetryIgnore 2 exibe o Abortar, repetir, e Ignorar botões

vbYesNoCancel 3 exibe o Sim não, e Cancelar botões

vbYesNo 4 exibe o sim e Não botões

vbRetryCancel 5 exibe o tentar novamente e Cancelar botões

O exemplo a seguir demonstra como criar uma caixa de diálogo pop-up que exibe um botão OK.

MsgBox “Clique em OK para continuar.”

Desde o vbOKOnly constante representa a seleção padrão para o MsgBox ()


função, ele não tem que ser especificado. No entanto, você pode especificá-lo como mostrado abaixo e alcançar os

mesmos resultados, como mostrado na Figura 6.7.

MsgBox “Clique em OK para continuar.”, VbOKOnly

Alternativamente, você pode substituir o valor numérico do vbOKOnly constante, como mostrado abaixo.

MsgBox “Clique em OK para continuar.”, 0

Tabela 6.6 lista os diferentes ícones que podem ser exibidos pela MsgBox () função.

Figura 6.7 usando o MsgBox () função para exibir uma caixa de diálogo pop-up com um Está bem botão
134 parte I Apresentando o Microsoft VBSCRIPT

Tabela 6.6 VBScript MsgBox () Função Ícones Constante

Valor Descrição

vbCritical 16 Exibe o ícone crítica

vbQuestion 32 Exibe o ícone de interrogação

vbExclamation 48 Exibe o ícone de ponto de exclamação

vbInformation 64 Exibe o ícone de informações

O exemplo a seguir demonstra como criar uma caixa de diálogo pop-up que exibe Está bem e Cancelar botões,
bem como o ícone de interrogação.

MsgBox “Clique em OK para tentar novamente.”, VbOKCancel + vbQuestion

Alternativamente, você poderia reescrever esta declaração como mostrado abaixo.

MsgBox “Clique em OK para tentar novamente.”, 1 + 32

Você também pode reescrevê-lo como segue.

MsgBox “Clique em OK para tentar novamente.”, 33

O formato do primeiro exemplo é o mais claro e mais fácil de ler. Independentemente de qual dos formatos
acima que você usa, a saída mostrada na Figura 6.8 será sempre o mesmo.

Figura 6.8 usando o MsgBox () função para solicitar ao usuário para obter instruções

Tabela 6.7 fornece uma lista de constantes que você pode usar para especificar o botão padrão uma caixa de diálogo

pop-up do.
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 135

Tabela 6.7 VBScript constantes MsgBox botão padrão constante

Valor Descrição

vbDefaultButton1 0 Faz o primeiro botão do padrão

vbDefaultButton2 256 Faz o segundo botão do padrão

vbDefaultButton3 512 Faz o terceiro botão do padrão

vbDefaultButton4 768 Faz o quarto botão padrão

O exemplo a seguir demonstra como criar uma caixa de diálogo pop-up que exibe Sim não, e Cancelar
botões. Além disso, o Cancelar botão foi configurado como o botão padrão.

MsgBox “Por favor, selecione uma opção.”, VbYesNoCancel + vbDefaultButton3

Figura 6.9 mostra como a caixa de diálogo pop-up aparece quando esta instrução é executada.

FIGURA 6.9 usando o MsgBox () função para apresentar o usuário com várias opções

Tabela 6.8 fornece uma lista de constantes que você pode usar para especificar a modalidade de uma caixa de

diálogo pop-up produzida pela MsgBox () função.

Tabela 6.8 VBScript MsgBox Modal Configuração Constantes Constante

Valor Descrição

vbApplicationModal 0 Usuário deve responder antes que o script pode continuar.

vbSystemModal 4096 Usuário deve responder antes que o script pode continuar. Além disso, a

caixa de diálogo pop-up permanece exibida em cima de outros aplicativos

ativos.
136 parte I Apresentando o Microsoft VBSCRIPT

O exemplo a seguir demonstra como criar uma caixa de diálogo pop-up que exibe tentar novamente e Cancelar
botões, bem como o ícone de ponto de exclamação. Além disso, o botão Cancelar foi configurado como
o botão padrão ea caixa de diálogo pop-up foi definido como o modelo de aplicação.

MsgBox “Clique em Repetir para tentar novamente.”, VbRetryCancel + vbExclamation + vbDefaultButton2 +

vbApplicationModal

Figura 6.10 mostra como a caixa de diálogo pop-up será exibida quando esta instrução é executada.

Figura 6.10 usando o MsgBox () função para criar uma caixa de diálogo modal aplicativo pop-up

resultados interrogando
Para determinar qual botão o usuário clicou, você precisa usar o MsgBox () função, tal como
demonstrado abaixo.

intChoice = MsgBox ( “Você gostaria de continuar?”, vbYesNo, _

“Confirmação de diálogo”)

Aqui, o valor numérico do botão que o usuário clica em é devolvido pelo


MsgBox () função e é armazenado em uma variável chamada intChoice. A Tabela 6.9 resume os
valores a que possíveis MsgBox () função pode retornar. No caso do exemplo anterior, um valor de 6 é
devolvido se o usuário clica no botão Sim e um valor de 7 é devolvido se o usuário clicar no botão
Não.
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 137

Tabela 6.9 Valores VBScript MsgBox () Função constante retorno

Valor Descrição

vbOK 1 Usuário clicou Está bem

vbCancel 2 Usuário clicou Cancelar

vbAbort 3 Usuário clicou Abortar

vbRetry 4 Usuário clicou tentar novamente

vbIgnore 5 Usuário clicou Ignorar

vbYes 6 Usuário clicou sim

vbNo 7 Usuário clicou Não

Tratamento de erros do VBScript


Erros podem ocorrer em VBScripts para uma variedade de razões, incluindo erros de sintaxe, a entrada do usuário

inválido, e recursos do sistema indisponíveis. VBScripts terminar automaticamente a sua execução e exibe uma

mensagem de erro quando ocorre um erro. Com bom planejamento e testar a maioria, mas não todos, os erros podem

ser eliminados. Infelizmente, os erros VBScript tendem a ser bastante enigmática e só servem para confundir a

maioria dos usuários.

No Capítulo 2, “Erros, constantes e variáveis,” você aprendeu sobre erros de sintaxe VBScript. Outra categoria de
erros que podem ocorrer dentro de VBScripts é executado em tempo erros. Run-Time erros ocorrem quando uma
instrução VBScript tenta executar uma ação inválida, como tentar aceder a uma unidade de disco rígido caiu. Erros
de tempo pode ser difícil de rastrear porque, ao contrário erros de sintaxe, eles não são detectados
automaticamente durante a interpretação script. Em vez disso, só ocorrem se a parte do código que os contém é
executado. A menos que cada parte de um VBScript é testado, é possível que os erros em tempo de execução não
pode ser capturado. Em muitos casos, você pode adicionar lógica de programação a seus VBScripts que antecipa
e recupera de erros em tempo de execução. No entanto, haverá ocasiões, como quando uma unidade de disco
falha ou a rede vai para baixo, que estão além de sua capacidade de controlar ou prever. Nestas circunstâncias, o
melhor que você normalmente pode fazer é apresentar o usuário com uma mensagem de erro personalizada que
explica claramente por que o script terminou sem cumprimento da sua missão.
138 parte I Apresentando o Microsoft VBSCRIPT

Decidir não tomar medidas


Muitos VBScripts consistem em apenas um punhado de declarações e são escritos em poucos minutos, a fim de

automatizar rapidamente a execução de uma tarefa comum particular. Nestas circunstâncias, muitas vezes é melhor

para omitir qualquer lógica de tratamento de erros e permitir erros para ocorrer de forma simples, uma vez que o

tempo necessário para antecipá-los e escrever código que tenta lidar com eles seria proibitivo. Isso geralmente é

aceitável quando os programadores a desenvolver pequenos scripts utilitários que só eles vão usar. No caso em que

os scripts serão compartilhadas com outros usuários, podem ser fornecidas instruções que perguntar ao usuário para

relatar quaisquer problemas que podem ocorrer com os scripts.

Dizendo VBScript para ignorar erros


Outra opção para lidar com erros em tempo de execução é dizer VBScript para ignorá-los e continuar o
processamento. Isso pode ser uma técnica eficaz em muitos casos. O exemplo a seguir pede ao utilizador
para introduzir três números, que são, então, adicionadas em conjunto.

intNoOne = CInt (InputBox ( “Digite o primeiro número”))

intNoTwo = CInt (InputBox ( “Digite o segundo número”))

intNoThree = CInt (InputBox ( “Digite o número final”))

intTotal = intNoOne + intNoTwo intTotal =

intTotal + intNoThree

MsgBox intTotal

Tudo funciona corretamente se o usuário digita em três números, conforme solicitado. Mas muitas vezes os
usuários não se comportam como esperado. Se, por exemplo, o usuário digita o número 3 seguido do número
3 e, em seguida, a palavra três, um erro de tempo de execução ocorreria. No entanto, se você modificar o
script, adicionando a seguinte declaração como sua primeira linha, VBScript irá ignorar o erro e exibir um valor
de 6 (isto é, o valor de intTotal antes da declaração onde ocorreu o erro).

On Error Resume Next

Embora por vezes eficaz, esta abordagem deve ser usado com cautela. Há poucas situações em
que ignorando um erro em uma parte de um script não resulta em outro erro mais tarde na execução
do script. Além disso, haverá alguns erros
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 139

que a declaração não será capaz de ignorar e evitar de terminar a execução do script.

Quando adicionado ao início de um script, o On Error Resume Next declaração está em vigor para todo
o script. Se desejar, você pode depois desativar os efeitos dessa declaração; você pode fazê-lo
adicionando a seguinte declaração para o seu VBScript:

Em GoTo erro 0

NOTA

Assim como as variáveis, você pode localizar os efeitos da On Error Resume Next declaração de
procedimentos. Isto proporciona-lhe a capacidade de limitar os efeitos dessa declaração para partes do
script que pode ser útil sem afetar o comportamento de todo o script.

Desenvolver rotinas de tratamento de erros


Outra opção para lidar com erros em tempo de execução é tentar desenvolver rotinas de tratamento de erros
que lidam com eles. A fim de ser capaz de efetivamente implementar manipuladores de erro, você precisa ser
capaz de antecipar os locais dentro de seus scripts onde os erros podem ocorrer e ser capaz de elaborar a
lógica apropriada para lidar com a situação. Exemplos de possíveis ações de recuperação de erro incluem:

◆ Solicitando que o usuário relatar o erro

◆ Dando as instruções para o usuário sobre o que fazer a seguir

◆ Fornecendo mensagens de erro mais descritivos

◆ A tentativa de executar automaticamente uma ação corretiva

◆ Dando ao usuário uma outra tentativa se a entrada de dados está envolvido

◆ Desculpando-se com o usuário para o erro

A fim de criar rotinas de tratamento de erros, você precisa saber como trabalhar com o VBScript Errar objeto.
Este objeto VBScript fornece acesso a mensagens de erro, bem como aos métodos que podem ser usados
​para lidar com eles. o Errar objeto tem três propriedades que fornecem as seguintes informações sobre um
evento de erro:

◆ Número. O número de erro do último evento de erro

◆ Descrição. A descrição do último evento de erro


140 parte I Apresentando o Microsoft VBSCRIPT

◆ Fonte. O objeto de origem que causou o erro

Cada uma dessas propriedades podem ser modificadas, o que lhe permite reformular-los e torná-los mais
compreensíveis antes de permitir que eles sejam exibidos para o usuário. O exemplo a seguir demonstra como
criar uma rotina personalizada de tratamento de erros.

On Error Resume Next

BogusProcedure ()

Se Err> 0, em seguida,

Err.Number = 9000

Err.Description = “Este script tentou executar um“_

“Procedimento que não foi definido pelo programador.” MsgBox “Erro:“& Err.Number &

“-“& Err.Description End if

O primeiro passo na criação de um manipulador de erro é adicionar o On Error Resume Next declaração para o
início do script ou procedimento. Em seguida, você deve adicionar uma declaração que verifica a existência de
um erro imediatamente após uma declaração onde você acha que pode ocorrer um erro. Você pode verificar
se há um erro específico ou por qualquer erro ao determinar se o número de erro atribuído ao erro Err.Number é
maior que 0. Você pode verificar se há erros em qualquer ponto do seu VBScript, onde você acha que eles
podem ocorrer e tomar ações diferentes com base em cada situação. No caso do exemplo anterior, o
manipulador de erro fornece o usuário com uma mensagem de erro mais descritiva.

A Figura 6.11 apresenta a saída do exibido pelo exemplo anterior.

FIGURA 6.11 VBScript fornece a capacidade de reconhecer e reagir aos eventos de erro

Tabela 6.10 fornece uma lista de VBScript erros de tempo de execução.


COLETA DE DADOS, notificação e relatório de erros Capítulo 6 141

Tabela 6.10 Erros VBScript de tempo de execução

hexadecimal Decimal Descrição

800a0005 5 chamada de procedimento inválida ou argumento

800A0006 6 Transbordar

800A0007 7 Fora da memória

800A0009 9 Subscrito fora do intervalo

800A000A 10 Esta matriz é fixa ou temporariamente bloqueado

800A000B 11 Divisão por zero

800a000d 13 tipo incompatível

800A000E 14 Fora do espaço de seqüência

800A0011 17 Não é possível executar operação solicitada

800A001C 28 Fora do espaço de pilha

800A0023 35 Sub ou função não definida

800A0030 48 Erro ao carregar DLL

800A0033 51 Erro interno

800a005b 91 variável de objeto não definida

800A005C 92 Para loop não inicializada

800A005E 94 Uso inválido de nulo

800A01A8 424 Objeto requerido

800A01AD 429 O componente ActiveX não consegue criar o objeto

800A01AE 430 classe não suporta a automatização

800A01B0 432 O nome do arquivo ou nome da classe não foi encontrado durante a operação de

automação

800A01B6 438 O objecto não suporta esta propriedade ou método

800A01BD 445 O objecto não suporta esta acção

800A01BF 447 O objecto não suporta configuração local atual

800A01C0 448 Argumento nomeado não encontrado

800A01C1 449 Argumento não opcional

continuou
142 parte I Apresentando o Microsoft VBSCRIPT

Erros Tabela 6.10 VBScript de tempo de execução ( contínuo)

hexadecimal Decimal Descrição

800A01C2 450 Número errado de argumentos ou atribuição de propriedade inválido

800A01C3 451 Objeto não uma colecção

800A01CA 458 Variável usa um tipo de automação não tem suportado no VBScript

800A01CE 462 A máquina servidor remoto não existe ou não está disponível

800A01E1 481 Imagem inválida

800a01f4 500 Variável é indefinido

800A01F6 502 Objeto não seguro para script

800A01F7 503 Objeto não é seguro para inicializar

800A01F8 504 Objeto não é seguro para a criação de

800A01F9 505 referência inválido ou não qualificado

800A01FA 506 Classe não definida

800A01FB 507 Uma excepção ocorreu

800A1390 5008 atribuição ilegal

800A1399 5017 Erro de sintaxe na expressão regular

800A139A 5018 quantificador inesperada

800A139B 5019 Espera] na expressão regular

800A139C 5020 Espera) em expressão regular

800A139D 5021 intervalo inválido no conjunto de caracteres

Limpando Erros
o Errar objeto fornece dois métodos que você vai achar útil. O primeiro método é o Claro() método. Se
ocorrer um erro em um script e é tratado, permitindo que o script para continuar, e depois ocorre um
novo erro, as informações sobre o novo erro irá substituir as informações armazenadas pela Errar objeto
sobre o erro anterior. No entanto, se o seu script verifica mais tarde para um erro e um novo erro não
ocorreu, as informações sobre o erro antigo será relatado novamente. para pré-
COLETA DE DADOS, notificação e relatório de erros Capítulo 6 143

desabafar este comportamento, utilize o Claro() método para excluir as informações para um erro previamente
tratada. Para usar o Claro() método, colocá-lo no final de sua rotina de tratamento de erros, como demonstrado
abaixo.

Se Err> 0, em seguida,

Err.Number = 9000

Err.Description = “Este script tentou executar um procedimento“_

“Que não tenha sido definido pelo programador.” MsgBox “Erro:“& Err.Number &

“-“& Err.Description Err.Clear End if

NOTA

VBScript irá executar automaticamente o Claro() método quando o On Error Resume Next instrução é
executada. Ele também executa a Claro() método quando o
Exit Sub e Função Exit declarações executar.

levantando Erros
o Errar objeto de Levantar() método fornece a capacidade de simular erros ao testar seus manipuladores de erro. Para

utilizar este método, colocá-lo em seu código apenas antes de seu manipulador de erro, como demonstrado abaixo.

Err.Raise (92)

Esta declaração simula um “loop não inicializado” error.Without o Levantar()


método, a única maneira de testar suas rotinas de tratamento de erros seria introduzir deliberadamente uma
situação de erro em seu código ou para simular problemas ambientais, como a unidade de disco e falhas de
rede.

resumo
Este capítulo descreve os prós e contras de trabalhar com o VBScript Caixa de entrada() função.
Isto incluiu como formatar texto exibido dentro de caixas de diálogo pop-up, bem como a forma
de interrogar e validar os dados que o
Caixa de entrada() função de coleta. Você também aprendeu sobre VBScript variável implícita
144 parte I Apresentando o Microsoft VBSCRIPT

coerção e como executar manualmente coerção variável explícita. O capítulo coberto como trabalhar
com o MsgBox () função, incluindo uma revisão de como especificar botões, ícones, o botão padrão e
modalidade. Além disso, você aprendeu a determinar qual botão o usuário selecionado. Este capítulo
também mostrou como armadilha e mensagens de erro reformatação para torná-los mais descritivo e
compreensível para o usuário.
Capítulo 7
VBScript Objects
Eu n Neste capítulo, você irá examinar como VBScript interage com seu ambiente, trabalhando com
objetos. Isto incluirá um exame de built-in de VBScript e tempo de execução objetos, bem como uma lista
completa de propriedades e métodos associados dos objetos. Além disso, você vai ter uma breve visão geral
da importância de objetos em navegador e específicos do WSH. Você também vai aprender a criar seus
próprios objetos personalizados repleta de seus próprios conjuntos de propriedades e métodos.

VBScript programação baseada em objetos


A fim de obter qualquer trabalho real feito, VBScript depende do uso de objetos. A
objeto permite o acesso a recursos do sistema e as estruturas de manipulação de dados por meio de métodos e
propriedades. Métodos são funções incorporadas em objetos que, quando executado, interagem com ou
manipular os recursos representados pelos objetos.
propriedades são qualidades dos recursos representados por objetos que descrevem o recurso de alguma maneira.

Algumas propriedades são somente leitura, permitindo que VBScript para coletar informações sobre o recurso. Outras

propriedades podem ser modificadas, proporcionando assim a capacidade de alterar directamente alguma qualidade de

um recurso representada por um objecto.

Por si só, VBScript tem recursos limitados. Ele não pode acessar os elementos da página HTML, o sistema de
arquivos do Windows, ou outros recursos do sistema. VBScript fornece apenas uma pequena coleção de objetos
embutidos. Estes objetos fornecem VBScript com a capacidade de reagir a erros e para analisar e extrair dados
de cordas. objetos embutidos do VBScript estão listadas na Tabela 7.1.

NOTA

coleção built-in de VBScript de objetos é fornecida pelo intérprete VBScript. Esses objetos estão disponíveis para
todos os VBScripts independentemente do ambiente no qual eles são executados.
VBSCRIPT OBJETOS Capítulo 7 147

Tabela 7.1 VBScript Built-in Objectos objecto

Descrição

Classe Fornece a capacidade de criar objetos personalizados Propriedades: Este

objeto não suporta quaisquer métodos Propriedades: Este objeto não

suporta quaisquer métodos de Eventos: Inicializar, Terminar

Errar Fornece detalhes sobre erros Propriedades em tempo de

execução: Descrição, HelpContext, HelpFile, Número, Fonte

Métodos: Limpar, Levante

Eventos: Este objeto não suporta quaisquer eventos

Combine Acessa propriedades somente leitura de um regulares Propriedades jogo

expressão: FirstIndex, Comprimento, Valor

Métodos: Este objeto não suporta quaisquer métodos de Eventos: Este

objeto não suporta quaisquer eventos

Jogos Colecção Uma coleção de expressão regular Combine objetos Propriedades: Este

objeto não suporta quaisquer propriedades Métodos: Este objeto não

suporta quaisquer métodos de Eventos: Este objeto não suporta quaisquer

eventos

RegExp Suporta Propriedades expressões regulares: Global,

IgnoreCase, Padrão

Métodos: Executar, Substituir Teste

Eventos: Este objeto não suporta quaisquer eventos

Coleção SubMatches Acessa somente leitura valores de cordas submatch expressões regulares

Propriedades: Este objeto não suporta quaisquer propriedades Métodos:

Este objeto não suporta quaisquer métodos Eventos: Este objeto não

suporta quaisquer eventos


148 parte I Apresentando o Microsoft VBSCRIPT

Propriedades pertencentes a objetos internos do VBScript


Como a Tabela 7.1 indica, recolha embutido de VBScript de objectos proporciona o acesso a um número de
propriedades diferentes. Tabela 7.2 lista cada uma destas propriedades, e descreve a sua finalidade.

Tabela 7.2 VBScript Propriedades do objeto Propriedade

Descrição

Descrição Recupera uma mensagem de erro

FirstIndex Retorna a primeira posição de uma substring especificado em uma string

Global Alterações ou recupera uma boleano valor

HelpContext Recupera o ID de contexto de um tópico arquivo da Ajuda

HelpFile Retorna o caminho para um arquivo de Ajuda

Ignorar caso recupera um boleano valor que indica se um padrão de pesquisa é sensível a maiúsculas

comprimento Retorna o comprimento de uma partida de busca seqüência

Número Retorna o número de erro para o erro especificado

padronizar Recupera o padrão de expressão regular em uma operação de busca

Fonte Recupera o nome do objeto que gera um erro

Valor Retorna o valor de um jogo de pesquisa de cadeia

Métodos que pertencem a objetos internos do VBScript


built-in de VBScript Errar e RegExp objetos fornecem acesso a um pequeno número de métodos. Tabela 7.3
listas de cada um desses métodos e descreve seu propósito.

Tabela 7.3 VBScript Métodos de objeto Objeto

Método Descrição

Errar Claro limpa uma Errar configurações de propriedade do objeto

Errar Levantar Usado para simular um erro de tempo de execução

RegExp Executar Realiza uma pesquisa de expressão regular contra uma string

RegExp Substituir Substitui o texto em uma pesquisa de expressão regular

RegExp Teste Realiza uma pesquisa de expressão regular contra uma string
VBSCRIPT OBJETOS Capítulo 7 149

Trabalhando com objetos internos do VBScript

Como a Tabela 7.1 mostra, VBScript fornece um número de objectos incorporados objects.These fornecer a

capacidade para executar todas as acções seguintes:

◆ Trabalhar com VBScript erros de tempo de execução

◆ Definir objetos personalizados e atribuir-lhes propriedades e métodos

◆ Execute caráter e correspondência de padrão usando expressões regulares As próximas

seções cobrir alguns desses objetos e suas capacidades.

O objeto Err
Você já aprendeu a trabalhar com o built-in Errar objeto de volta no Capítulo 6, “Recolha de Dados,
Notificação e Relatório de Erros” Este objeto fornece acesso a tempo de execução informações de erro,
fornecendo acesso aos seguintes propriedades:

◆ Descrição. A cadeia de caracteres descrevendo a condição de erro

◆ Número de erro. O número de erro VBScript associado ao erro


◆ Fonte. O nome do recurso que relatou o erro
◆ HelpContext. Define um ID de contexto para um tópico no arquivo da Ajuda especificado

◆ HelpFile. O nome ea localização de um arquivo de ajuda contendo externa


em formação

Além disso, este objeto fornece dois métodos para trabalhar com erros:

◆ Claro(). Exclui informações armazenadas pela Errar objeto sobre o


erro atual
◆ Levantar(). Oferece a capacidade de gerar e erros em tempo de execução de teste

O objeto de classe
VBScript fornece suporte para um número de diferentes subtipos de dados, incluindo cordas e datas. VBScript também

suporta a estrutura de dados de matriz mais complexo. VBScript fornece a Classe objeto como um meio de criar uma

complexa estrutura de dados personalizado, ou objetos personalizados. Ao criar seus próprios objetos personalizados,

você pode encapsular funções de dados para criar novos objetos, que seus VBScripts pode acessar como quaisquer

outros objetos. Criação de objetos personalizados fornece seus scripts com uma ferramenta que ajuda
150 parte I Apresentando o Microsoft VBSCRIPT

assegurar a consistência dos dados, uma vez que permite definir os procedimentos para a validação e aplicação de

propriedades do objecto e para o controlo de manipulação de objectos.

Classe Object Sintaxe


Os objetos personalizados são criados usando o Classe Classe ... End declaração. o
Classe por conseguinte, objecto fornece um modelo para a definição de outros objectos e as suas estruturas. Uma

vez definido, esses objetos podem ser instanciado como um outro objeto. A sintaxe para esta afirmação é descrito
abaixo.

Classe Nome da classe

Afirmações

End Class

Nome da classe representa o nome a ser atribuído ao novo objeto. Afirmações


representam as variáveis, propriedades e métodos definidos no interior do objecto. Métodos são estabelecidos
pela definição da Sub ou Função procedimentos. Propriedades são definidas usando qualquer uma das seguintes
declarações para manipular as variáveis ​definidas dentro do Classe Classe ... End declaração:

◆ Obter propriedade. Oferece a capacidade de recuperar o valor atribuído a um


variável privada

◆ Property Let. Oferece a capacidade de alterar o valor atribuído a um


variável privada

◆ Conjunto de propriedades. Oferece a capacidade de alterar o valor de um objeto


variável

Criação de variáveis, propriedades e métodos


Variáveis, propriedades e métodos podem ser definidos como público (acessível em todo o script) ou
privada (disponível apenas dentro do Classe) usando o Público e
Privado palavras-chave. A menos que especificado, Público é sempre assumido.

NOTA

Embora você pode permitir que as variáveis ​definidas dentro do Classe Classe ... End declaração para ter um
âmbito público, isso não é recomendado. Isso impede que você seja capaz de validar o valor atribuído à variável de
dentro do objeto. Em vez disso, é recomendável que você faça todas as variáveis ​privado e expô-los usando o Get
propriedade e Property Let afirmações. Dessa forma, você pode criar uma lógica de validação de dados em seu
objeto e garantir a integridade dos dados.
VBSCRIPT OBJETOS Capítulo 7 151

O exemplo a seguir demonstra como usar o Classe objeto para criar um objeto personalizado
chamado Cliente.

classe Cliente

strCustName privada

Public Property Get CustomerName

CustomerName = strCustName End

Property

Public Property Let CustomerName (strNameAssignment)

propriedade StrCustName =

strnameAssignment End

DisplayName função

MsgBox (strCustName)

Classe Function End

A primeira instrução define uma variável privada chamada strCustName. As próximas três instruções usar
essa variável para criar uma propriedade e torná-lo legível. As três declarações que se seguem fazem o
gravável propriedade. Finalmente, a última três instruções dentro do Classe Classe ... End declaração definir
uma função que vai servir como um método de objecto.

Agora que um novo objeto foi definido, você pode criar uma instância, como mostrado abaixo.

Dim objCustName

Definir objCustName = Novo cliente

Você pode então armazenar o nome de um cliente para o objeto.

objCustName.CustomerName = “ABC Inc.”

Você pode então executar o objeto do DisplayGreeting () método.

objCustName.DisplayName ()
152 parte I Apresentando o Microsoft VBSCRIPT

NOTA

Dados armazenados em objetos é destruído assim que o script termina. Isto tem um efeito um pouco limitante em seu valor. No entanto,

há uma série de maneiras para armazenar e recuperar dados do objeto. Por exemplo, quando se trabalha com o WSH, você poderia

escrever dados de objeto para um arquivo ou armazená-lo em uma variável do sistema. Da mesma forma, quando se utiliza VBScript no

desenvolvimento de páginas Web, você pode armazenar dados de objeto não sensíveis localmente em computadores clientes usando

cookies.

Configuração de inicialização e terminação Procedimentos


Objetos criados pelo Classe Classe ... End declaração apoiar os seguintes eventos:

◆ Class_Initialize. Se estiver presente, este método é executado sempre que um


instância do objecto é criado, proporcionando uma oportunidade para executar tarefas de inicialização,

tais como definindo os valores das variáveis ​iniciais.

◆ Class_Terminate. Se estiver presente, este método é executado sempre que um

instância do objecto é destruído, proporcionando uma oportunidade para executar quaisquer tarefas de

limpeza necessários.

As declarações a seguir demonstram como desencadear execução de instrução com base na


ocorrência do Class_Initialize e Class_Terminate eventos.

Private Sub Class_Initialize

MsgBox ( “O Class_Initialize Subroutine está executando!”) End Sub

Private Sub Class_Terminate

MsgBox ( “O Class_Terminate Subroutine está executando!”) End Sub

Uma vez adicionado um dentro Classe Classe ... End declaração, esses eventos será executado
automaticamente sempre que uma nova instância do objeto associado é criada ou destruída.
VBSCRIPT OBJETOS Capítulo 7 153

NOTA

Você pode criar uma nova instância de um objeto personalizado usando o Conjunto declaração eo
Novo palavras-chave, tal como demonstrado abaixo.

Definir objCustName = Novo cliente

Da mesma forma, você pode destruir um objeto personalizado usando o Conjunto declaração.

Definir objCustName = Nada

Nada é uma palavra-chave VBScript que dissocia uma variável de objecto a partir de um objecto. Enquanto há outras
variáveis ​de objeto se referir ao objeto em questão, a memória usada para armazenar seus dados são liberados.

O objeto RegExp e outros objetos relacionados


Excepto para o Errar e o objeto Classe objeto, todo o resto dos objetos embutidos de VBScript são projetados para

trabalhar com expressões regulares. UMA expressão regular é um padrão de texto composto por caracteres e

metacaracteres. As expressões regulares fornecem a capacidade de identificar padrões e realizar pesquisa

complexa e substituir operações. o RegExp objeto permite trabalhar com expressões regulares em VBScript. Para

adicionar um RegExp opor-se a seus VBScripts, você deve primeiro definir uma variável para representá-lo e, em

seguida, usar o Novo palavra-chave para instanciar que, como demonstrado abaixo.

Dim regExpObj

Definir regExpObj = New RexExp

o RegExp objeto tem três propriedades:

◆ Padronizar. Especifica o padrão de expressão regular a ser correspondido

◆ Ignorar caso. Um valor booleano que determina se um case-sensitive


pesquisa é realizada

◆ Global. Um valor booleano que determina se todas as ocorrências de um


padrão de jogo deve ser substituído Além disso, o RegExp objeto fornece uma série de

métodos, um dos quais é a


Substituir() método. Este método substitui os padrões de texto correspondente em uma seqüência de pesquisa. Sua

sintaxe é mostrada na seguinte declaração.


154 parte I Apresentando o Microsoft VBSCRIPT

RegExp.Replace ( Cadeia1, Cadeia2)

string1 é a seqüência em que as substituições devem ocorrer e string2 é a string de substituição.

Por exemplo, as seguintes declarações demonstram como usar o RegExp opor-se a procurar uma cadeia
variável chamada strQuote e substituir uma ocorrência da palavra
criança.

Dim regExpObj, strQuote Set

regExpObj = New RegExp

regExpObj.Pattern = “menino”

strQuote = “Era uma vez havia um menino.” MsgBox RegExpObj.Replace

(strQuote, “criança”)

As duas primeiras instruções neste exemplo definir e criar uma instância do RegExp objeto nomeado regExpObj.
A próxima linha usa o RegExp o projeto de padronizar
propriedade para definir um padrão de pesquisa. A declaração que se segue configura a string a ser
pesquisada. Finalmente, a última declaração no exemplo substitui a primeira ocorrência dos caracteres Garoto com
os personagens criança ( o valor atribuído ao Padrão RegExp propriedade).

O exemplo anterior substitui somente a primeira ocorrência do jogo padrão especificado. No entanto, você pode

modificar o padrão de pesquisa, como mostrado abaixo para procurar e substituir todos padrão corresponde na

seqüência de pesquisa.

Dim regExpObj, strQuote Set

regExpObj = New RegExp

regExpObj.Pattern = “menino”

regExpObj.Global = True

strQuote = “Era uma vez havia um menino.” MsgBox RegExpObj.Replace

(strQuote, “criança”)

Como você pode ver, uma nova declaração foi adicionada para o exemplo, que usa o
Global propriedade do RegExp propriedade para substituir todas as instâncias correspondentes na seqüência de

pesquisa. VBScript também fornece uma série de metacaracteres que você pode usar quando se trabalha com a RegExp

objeto de padronizar propriedade. Por exemplo, as seguintes declarações executar uma substituição padrão usando um

intervalo de valores:

Dim regExpObj, strQuote Set

regExpObj = New RegExp

regExpObj.Pattern = “[\ d]”


VBSCRIPT OBJETOS Capítulo 7 155

regExpObj.Global = True

strQuote = “Seu número de cliente é 8.” MsgBox

RegExpObj.Replace (strQuote, “1008”)

O \ d metacharacter especifica que qualquer dígito deve ser usado como a string de substituição. No
caso deste exemplo, o número 8 é substituído com o número 1008. A Tabela 7.4 lista os
metacharacters suportados por VBScript expressões regulares.

Tabela 7.4 VBScript Métodos de objeto de caracteres

Descrição

\ Define o próximo caractere como um caractere especial, uma referência para trás, um literal, ou um escape octal

^ Combina com o início da cadeia de entrada

$ Combina com o fim da cadeia de entrada

* Corresponde a expressão anterior (nenhum ou mais vezes)

+ Corresponde a expressão anterior (uma ou mais vezes)

? Corresponde a expressão anterior (zero ou um tempo)

{ n} Corresponde exatamente n vezes

{ n,} Corresponde a um mínimo de n vezes

{ n, m} Corresponde a um mínimo de n vezes e, no máximo, m vezes

. Corresponde a qualquer carácter individual, exceto o caractere de nova linha

( padronizar) Corresponde a um padrão e permite que o substring combinada a ser recuperada a partir do

Fósforos coleção.

x|y Fósforos X ou y

[ xyz] Corresponde a qualquer dos caracteres indicados

[^ xyz] Corresponde a qualquer caractere, exceto os especificados

[ az] Corresponde a qualquer caractere especificado no intervalo

[^ az] Corresponde a qualquer caractere, exceto os especificados na faixa

\b Jogos em um limite de palavra

\B Jogos em um limite de não-palavra

\cX Coincide com o caractere de controle especificada como X

continuou
156 parte I Apresentando o Microsoft VBSCRIPT

Tabela 7.4 Métodos de objeto (VBScript contínuo)

Personagem Descrição

\d Corresponde a um número de um dígito

\D Corresponde a qualquer caractere não-numérico único

\f Corresponde ao carácter alimentar-form

\n Coincide com o caractere de nova linha

\r Coincide com o caractere de retorno de carro

\s Corresponde a qualquer carácter espaço em branco (por exemplo, espaço, separador, forma-alimentação)

\S Corresponde a qualquer caractere não-white-space

\t Coincide com o caractere de tabulação

\v Coincide com o caractere de tabulação vertical

\W Corresponde a qualquer caractere de palavra

\W Corresponde a qualquer caractere não-palavra

\xn Fósforos N, Onde n é um valor hexadecimal fuga de dois dígitos

\ num Fósforos num, Onde num é um número inteiro positivo, em uma referência para trás para partidas capturados

\n Especifica um valor de escape octal ou uma referência para trás

\ NML Jogos valor de escape octal NML Onde n é um dígito octal na gama de 0-3 e m e eu são
dígitos octal na gama de 0-7

\você n Fósforos N, Onde n é um personagem hexadecimal Unicode de quatro dígitos

o RegExp objeto fornece dois métodos adicionais, como descrito abaixo.

◆ Teste(). Pesquisas uma expressão regular e retorna um valor booleano indi-


cando se um padrão correspondente foi encontrado

◆ Executar(). Cria uma coleção Partidas de uma pesquisa de um regular


expressão

O teste () Método
o Teste() método permite verificar se uma string contém uma correspondência padrão. Ele tem a
seguinte sintaxe:

RegExp.Test ( corda)
VBSCRIPT OBJETOS Capítulo 7 157

Por exemplo, as seguintes declarações demonstram como usar o Texto()


método para informar sobre a presença ou ausência de uma correspondência de padrão:

Dim regExpObj, strQuote Set

regExpObj = New RegExp

regExpObj.Pattern = “menino”

strQuote = “Era uma vez havia um menino.” Se regExpObj.Test (strQuote) =

True Then

MsgBox “correspondência encontrada”

Else

MsgBox “No Match Found” End If

O Execute () Método
o RegExp objeto de Executar() método cria um Fósforos coleção de uma pesquisa de uma
expressão regular e tem a seguinte sintaxe:

RegExp.Execute (string)

O resultado Fósforos coleção é somente leitura, assim como o indivíduo Combine


objetos que compõem a coleção. Uma vez criado, você pode fazer um loop através de cada objeto no Fósforos
recolha e processá-lo, como demonstrado no exemplo seguinte.

'************************************************* ************************ 'Script Nome: 7.1.vbs script' Autor: Jerry

Ford 'Criado: 02/05/2003

'Descrição: Execução de expressão regular substituições padrão' *****************************************

********************************

'Seção de inicialização

Option Explicit

Dim regExpObj, strQuote, colMatchStmts, strDisplayText, intCount, Match Set regExpObj = New RegExp

regExpObj.Pattern = “file” 'Especifique o texto a procurar


158 parte I Apresentando o Microsoft VBSCRIPT

regExpObj.Global = True 'Executar um jogo Global padrão

'Especifique a string a ser procurado

strQuote = “Nome do arquivo filename logFile arquivo logfile Arquivo”

'Secção de Processamento Principal

CreateMatchesCollection ()

ProcessMatchesConnection ()

DisplayResults ()

'Secção Procedimento

Sub CreateMatchesCollection ()

'Use o objeto RegExp Execute () método para criar um corresponde coleção Set colMatchStmts =

regExpObj.Execute (strQuote) End Sub

Sub ProcessMatchesConnection ()

'Configurar um contador para contar o número de registro de jogos intCount = 0

'Loop através da coleção resultados para cada partida

em colMatchStmts

'Construir uma string que exibe o local onde cada correspondência foi encontrada strDisplayText =

strDisplayText & “A partida ocorreu na posição“& _

Match.FirstIndex & vbCrLf intCount =

intCount + 1 Next End Sub

DisplayResults sub ()

'Mostrar os resultados

MsgBox “Número total de partidas =“& intCount & vbCrLf & vbCrLf & ‘’ & _

strDisplayText End

Sub
VBSCRIPT OBJETOS Capítulo 7 159

Neste exemplo, uma Fósforos recolha constituído por três Combine objetos é criada usando o RegExp objeto de Executar()

método. Cada um desses objetos jogo tem seu próprio conjunto de propriedades associadas, incluindo a FirstIndex propriedade,

que especifica a localização na seqüência de pesquisa, onde é encontrada uma correspondência. UMA For Each ... Next ansa

é, então, usado para montar uma cadeia de caracteres de exibição que mostra a localização de cada uma adequação

de padrões, como mostrado na Figura 7.1.

Figura 7.1 Processar os conteúdos de um Fósforos coleção criada pela RegExp objeto de
Executar() método

Outras coleções de objetos disponíveis para


VBScript
coleção built-in limitado de VBScript de objetos torna uma linguagem de script seguro, o que
significa que ele não tem capacidade inerente para afetar o ambiente em que opera. Para operar
e controlar o ambiente em que ele executa, VBScript depende colecções externas de objetos.

Objetos baseado em navegador


VBScripts que são executados dentro de páginas HTML e carregados no Internet Explorer tem acesso a duas
coleções diferentes de objetos. A primeira coleção de objetos é referido como o DHTML ( HTML dinâmico) modelo
de objeto. Este é um modelo mais antigo objeto originalmente desenvolvido para o Internet Explorer versões 3
e 4. O modelo de objeto DHTML também é suportado pelo Internet Explorer 5 e 6, para efeitos de
compatibilidade com versões anteriores. O segundo conjunto de objectos é conhecido como o DOM ( Document
Object Model). Esse modelo de objeto fornece VBScript com a capacidade de acessar e controlar objetos em
uma página HTML, como links, imagens, quadros, formas e elementos de formulário.
160 parte I Apresentando o Microsoft VBSCRIPT

NOTA

Para mais informações sobre os modelos de objetos fornecidos pelo Internet Explorer, consulte o Capítulo 8,
“VBScript e Internet Explorer.”

Objetos disponíveis Quando executado no WSH


Quando VBScripts são executados pelo WSH, eles têm acesso a dois diferentes conjuntos de objetos. Um
conjunto de objetos disponíveis para VBScripts executadas pelo WSH é referido como o WSH modelo objecto
núcleo. Os objetos que compõem esse modelo de objeto proporcionar o acesso a um conjunto de recursos do
Windows, incluindo o desktop do Windows, sistema de arquivos, registro e recursos de rede.

NOTA

Para mais informações sobre o modelo de objeto WSH, consulte o Capítulo 9, “VBScript eo WSH.”

O segundo conjunto de objectos é referido como VBScript de tempo de execução objetos. Estes objectos são

fornecidos por uma DLL externa ( Dynamic Link Library) nomeado scrrun.dll.

Eles fornecem VBScript com a capacidade de acessar o sistema de arquivos do Windows. Além disso, os objectos

VBScript de tempo de execução incluem um objecto conhecido como um Dicionário objeto. o Dicionário objeto permite

armazenar dados em uma matriz associativa e para recuperar os dados armazenados nessa matriz usando as teclas em

vez de uma posição de índice, como é o caso de matrizes de VBScript regulares. objectos de tempo de execução do

VBScript estão listadas na Tabela 7.5.

Tabela 7.5 VBScript de tempo de execução objeto objetos

Nome Descrição

Dicionário Armazena dados de chaves, pares item

Propriedades: Contagem, ponto, Key

Métodos: Adicionar, existe, Items, Keys, Remover, RemoveAll

Dirigir Fornece script com acesso a propriedades do disco


VBSCRIPT OBJETOS Capítulo 7 161

Tabela 7.5 Objectos VBScript de tempo de execução ( contínuo)

Nome do objeto Descrição

propriedades: AvailableSpace, DriveLetter, DriveType, FileSystem,


FreeSpace, isReady, Path, RootFolder, SerialNumber, ShareName,
TotalSize, VolumeName

Métodos: Este objeto não suporta quaisquer métodos

Coleção Drives Fornece script com acesso a informações sobre as propriedades de localização de uma

unidade: Contagem, ponto

Métodos: Este objeto não suporta quaisquer métodos

Arquivo Fornece script com acesso a Propriedades de arquivo: Atributos,


DateCreated, DateLastAccessed, Data de modificação, Drive, Nome,
ParentFolder, Path, ShortName, shortpath, tamanho, tipo

Métodos: Copiar, Apagar, Mover, OpenAsTextStream

Coleção arquivos Fornece scripts com acesso a arquivos armazenados em uma pasta especificada

Propriedades: Contagem, ponto

Métodos: Este objeto não suporta quaisquer métodos

FileSystemObject Fornece scripts com acesso para as propriedades do sistema de

arquivos: Drives

Métodos: Buildpath, CopyFile, CopyFolder, CreateFolder, CreateTextFile,


DeleteFile, DeleteFolder, DriveExists, FileExists, FolderExists, GetAbsolutePathName,
GetBaseName, GetDrive, GetDriveName, GetExtensionName, GetFile, GetFileName,
GetFolder, GetParentFolderName, GetSpecialFolder, GetTempName,
MoveFile, MoveFolder, OpenTextFile

Pasta Fornece scripts com acesso a Propriedades de pasta: Atributos,


DateCreated, DateLastAccessed, Data de modificação, Drive,
Arquivos, IsRootFolder, nome, ParentFolder, Path, ShortName,
shortpath, tamanho, subpastas Tipo

Métodos: Copiar, Apagar, Mover, OpenAsTextStream


continuou
162 parte I Apresentando o Microsoft VBSCRIPT

Tabela 7.5 Objectos VBScript de tempo de execução ( contínuo)

Nome do objeto Descrição

Coleção pastas Fornece scripts com acesso a pastas localizadas dentro de outro
Propriedades da pasta: Contagem,

ponto

Métodos: Adicionar

Propriedades Pertencentes a VBScript de tempo de execução Objects

VBScript objetos de tempo de execução fornecidas pela oferta WSH uma extensa coleção de propriedades

properties.These fornecer informações sobre o sistema de arquivos do Windows e arquivos e pastas do Windows. Tabela

7.6 contém uma lista completa das propriedades de tempo de execução.

Nome da Tabela 7.6 VBScript Run-Time Properties

Propriedades Descrição

AtEndOfLine Retorna um valor de qualquer Verdade ou Falso com base em se o ponteiro do arquivo atingiu

o TextStream marcador de fim de linha do arquivo

AtEndOfStream Retorna um valor de qualquer Verdade ou Falso com base em se o fim de um TextStream
arquivo foi alcançado

Atributos Modifica ou recupera atributos de arquivos e pastas

Espaço disponível Recupera a quantidade de espaço livre disponível na unidade especificada

Coluna Recupera a posição da coluna corrente numa TextStream Arquivo

CompareMode Define ou retorna o modo de comparação usado para comparar um

Dicionário chaves de string do objeto

Contagem Retorna um valor que representa o número de itens em uma coleção ou


Dicionário objeto

Data Criada Recupera um arquivo ou data de criação da pasta e do tempo

DateLastAccessed Recupera a data e hora em que um arquivo ou pasta foi acessado pela última vez

data de modificação Recupera a data e hora em que um arquivo ou pasta foi modificada pela última vez

Dirigir Recupera a letra da unidade onde um arquivo ou pasta está armazenada

DriveLetter Recupera letra de unidade da unidade especificada

Drives estabelece uma Drives coleção que representa todas as unidades encontradas no computador
VBSCRIPT OBJETOS Capítulo 7 163

Tabela 7.6 VBScript Propriedades de tempo de execução ( contínuo)

Nome da propriedade Descrição

Tipo de drive Retorna um valor identificando o tipo de uma unidade

arquivos estabelece uma arquivos coleção para representar toda a Arquivo objetos localizados dentro de uma

pasta especificada

Sistema de arquivo Recupera o nome do sistema de arquivos usado na unidade especificada

Espaço livre Recupera a quantidade de espaço livre disponível na unidade especificada

Está pronto Retorna um valor de qualquer Verdade ou Falso com base na disponibilidade da unidade

especificada

IsRootFolder Retorna um valor de qualquer Verdade ou Falso com base em se a pasta


especificada é a pasta raiz

Item Recupera ou define um item com base na especificado Dicionário


chave de objeto

Chave define um Dicionário chave de objeto

Linha Recupera o número da linha atual no TextStream Arquivo

Nome Obtém ou modifica o nome de um arquivo ou pasta

ParentFolder Retorna uma referência do arquivo especificado ou objeto pasta pai da pasta

Caminho Recupera o caminho associado ao arquivo, pasta ou unidade especificada

Pasta raiz recupera o Pasta objecto associado com a pasta de raiz na unidade especificada

Número de série Recupera o número de série do volume do disco especificado

ShareName Recupera nome do compartilhamento da unidade de rede especificado

Nome curto Recupera o arquivo ou pasta especificada de nome curto 8.3 personagem

shortpath Recupera nome de caminho curto de um arquivo ou pasta associada a um arquivo ou nome de 8.3

personagem de pasta

Tamanho Retorna o número de bytes que compõem um arquivo ou pasta

subpastas estabelece uma Folders coleção composta pelas pastas localizadas dentro de uma pasta

especificada

Tamanho total Recupera um valor que representa o número total de bytes disponíveis em uma unidade

Tipo Recupera informações sobre o tipo do arquivo ou pasta especificada de

VolumeName Obtém ou modifica o nome do volume de uma unidade


164 parte I Apresentando o Microsoft VBSCRIPT

Métodos que pertencem a VBScript de tempo de execução Objects

métodos em tempo de execução de VBScript fornecem a capacidade de acessar o sistema de arquivos do Windows; para

criar, modificar e apagar arquivos e pastas; e para criar e arquivos de texto processo. Tabela 7.7 contém uma lista

completa dos métodos fornecidos por objetos em tempo de execução de VBScript.

Nome da Tabela 7.7 VBScript de tempo de execução Métodos

Método Descrição

Adicionar (dicionário) Adiciona um par de chaves e item para uma Dicionário objeto

Adicionar (pastas) adiciona um Pasta a uma coleção

Buildpath Acrescenta um nome para o caminho

Fechar Fecha um aberto TextStream Arquivo

cópia de Copia um arquivo ou pasta

CopyFile Copia um ou mais arquivos

CopyFolder cópias recursivamente uma pasta

Criar pasta Cria uma nova pasta

CreateTextFile Cria um arquivo e um TextStream objeto para que ele pode ser lido
e escrito

Excluir Exclui um arquivo ou pasta

DeleteFile Exclui um arquivo

DeleteFolder Exclui conteúdo de uma pasta

DriveExists Retorna um valor de Verdade ou Falso com base em se existe uma unidade

Existe Retorna um valor de Verdade ou Falso com base em se existe uma chave em um Dicionário

objeto

O arquivo existe Retorna um valor de Verdade ou Falso com base em se o arquivo especificado pode

ser encontrada

FolderExists Retorna um valor de Verdade ou Falso com base em se a pasta especificada pode

ser encontrada

GetAbsolutePathName Recupera um nome de caminho completo

GetBaseName Recupera um nome de arquivo sem sua extensão de arquivo

GetDrive retorna o Dirigir objecto associado com a unidade no caminho especificado


VBSCRIPT OBJETOS Capítulo 7 165

Tabela 7.7 VBScript Métodos de tempo de execução ( contínuo)

Nome do método Descrição

GetDriveName Retorna o nome de uma unidade

GetExtensionName Retorna extensão de um arquivo

GetFile retorna uma Arquivo objeto

GetFileName Retorna o último nome de arquivo ou pasta do caminho especificado

GetFileVersion Retorna o número versão de um arquivo

GetFolder retorna o Pasta objecto associado com a pasta no caminho especificado

GetParentFolderName Retorna o nome da pasta pai

GetSpecialFolder Retorna o nome de uma pasta especial

GetTempName Retorna o nome de um arquivo temporário ou pasta

Unid Retorna uma matriz onde os itens em um Dicionário objeto são armazenados

Chaves Devolve uma matriz que contém as chaves em um Dicionário


objeto

Mover Move um arquivo ou pasta

MoveFile Move um ou mais arquivos

MoveFolder Move um ou mais pastas

OpenAsTextStream Abre um arquivo e recupera um TextStream objeto, a fim de fornecer uma referência

para o arquivo

OpenTextFile Abre um arquivo e recupera um TextStream objeto, a fim de fornecer uma referência

para o arquivo

Ler Retorna uma string contendo um número especificado de caracteres a partir de um TextStream

Arquivo

Leia tudo Lê toda a TextStream arquivo e seu conteúdo

Leia a linha Lê uma linha inteira do TextStream Arquivo

Remover exclui um Dicionário chave, par de itens do objeto

Deletar tudo apaga tudo Dicionário chaves, pares de itens de objetos

Pular Ignora um número especificado de posições de caracteres ao processar uma TextStream

Arquivo

( continuou)
166 parte I Apresentando o Microsoft VBSCRIPT

Tabela 7.7 VBScript Métodos de tempo de execução ( contínuo)

Nome do método Descrição

SkipLine Salta uma linha inteira quando o processamento de um TextStream Arquivo

Escrever Coloca uma string especificada no TextStream Arquivo

WriteBlankLines Escreve um número especificado de nova linha caracteres à


TextStream Arquivo

WriteLine Grava a seqüência especificada para o TextStream Arquivo

O objeto Run-Time Dicionário


Todos os VBScript objetos de tempo de execução, exceto para o Dicionário objeto, são projetados para trabalhar

com arquivos e o sistema de arquivos do Windows. A utilização destes objectos é coberto extensivamente em

partes III, IV, e V deste livro. Esta seção fornece uma revisão da Dicionário objeto. o Dicionário e o objeto FileSystemObject

objeto são os dois objetos em tempo de execução VBScript toplevel. o Dicionário objeto fornece a capacidade de

definir-se uma matriz associativa baseada em pares de chaves e de item. Em outras palavras, ao contrário de

matrizes tradicionais VBScript, que armazenam e recuperam dados com base na sua posição indexada dentro da

matriz, os itens armazenados em um Dicionário objeto são armazenados e recuperados usando uma chave. Essa

chave pode ser um número, uma string, ou qualquer um dos subtipos de dados suportados por VBScript. o Dicionário

objeto não até mesmo apoiar o uso de números de índice porque não armazenar itens com base em ordem. o Dicionário

objeto tem todas as vantagens de uma matriz, proporcionando uma maior flexibilidade no armazenamento e

recuperação de dados. Além disso, o Dicionário objecto proporciona um número de propriedades e métodos que

melhoram a sua capacidade para controlar os dados armazenados numa Dicionário objeto. o Dicionário objecto

suporta três propriedades:

◆ Contagem. Recupera o número de itens armazenados em um Dicionário objeto

◆ Item. Recupera ou adiciona um item com uma chave especificada em um Dicionário

objeto

◆ Chave. Acrescenta uma chave em um Dicionário objeto Além disso, o Dicionário objeto fornece

acesso aos seguintes métodos:

◆ Adicionar. Adiciona um par de chaves e item para uma Dicionário objeto


VBSCRIPT OBJETOS Capítulo 7 167

◆ Existe. Retorna um valor booleano de Verdade Se uma chave especificada existe no

Dicionário objeto e Falso se isso não acontecer

◆ Unid. Retorna um array contendo todos os itens em uma Dicionário


objeto

◆ Chaves. Retorna um array contendo todas as chaves existentes em um Dicionário

objeto

◆ Remover. Remove um par de chaves, item de uma Dicionário objeto

◆ Deletar tudo. Remove todos, pares de chaves item de uma Dicionário objecto Para melhor
demonstrar a aplicação do Dicionário objeto, considere o seguinte exemplo. Para adicionar uma
instância da Dicionário opor a uma VBScript, você deve primeiro definir uma variável pelo qual pode ser
referenciado e, em seguida, criar uma instância do objeto.

Dim dicObject

Definir dicObject = CreateObject ( “Scripting.Dictionary”)

Uma vez instanciado, você pode então armazenar itens no objeto, juntamente com suas chaves associadas, como

demonstrado abaixo.

dicObject.Add “Aug2003Rpt”, “AugReports.txt” dicObject.Add

“Sep2003Rpt”, “SepReports.txt” dicObject.Item ( “Oct2003Rpt”) =

“OctReports.txt”

As duas primeiras demonstrações adicionar dados ao Dicionário objecto utilizando o Adicionar()

método. O primeiro argumento especificado é a chave que é para ser associado com os dados, que se segue

como o segundo argumento. A última declaração acrescenta um terceiro pedaço de dados usando o Item() propriedade,

demonstrando assim que se você faz referência um par chave / item que não existe, VBScript irá adicioná-lo

automaticamente para você. Depois de ter preenchido o seu Dicionário objeto com dados, você pode voltar e

trabalhar com os seus dados. Por exemplo, as seguintes declarações usar o Existe()

Método para determinar se existe um par de chaves / produto. Se isso acontecer, então o Item()

método recupera e exibe um elemento de dados, fornecendo a sua chave associada.

Se dicObject.Exists ( “Sep2003Rpt”) = True Then

MsgBox “O valor armazenado na Sep2003Rpt é“& dicObject.Item ( ‘Sep2003Rpt’) End If


168 parte I Apresentando o Microsoft VBSCRIPT

Remoção de pares de chave / item de uma Dicionário objeto é tão fácil quanto adicionar-las. Por
exemplo, a seguinte declaração mostra como usar o Remover()
método para excluir um elemento de dados usando sua chave associada:

DicObject.Remove “Sep2003Rpt”

Alternativamente, se você preferir para apagar todos os dados armazenados em um Dicionário objeto, você pode fazer isso

usando o Deletar tudo() método, como mostrado abaixo.

DicObject.RemoveAll

resumo
Neste capítulo, você foram apresentados com uma lista completa de built-in de VBScript e objetos em tempo
de execução. Além de analisar estes objetos e suas propriedades e métodos associados, você aprendeu a
criar seus próprios objetos personalizados. Você também aprendeu a criar uma matriz associativa usando o Dicionário
opor ao desenvolver VBScripts que funcionam com o WSH. Outras modelos de objetos também foram
discutidas, incluindo aqueles fornecidos pelo Internet Explorer eo WSH.
Capítulo 8
VBScript e Internet
Explorer
Eu n capítulos anteriores, você aprendeu o básico de programação VBScript e foram introduzidas para objetos
de tempo de execução incorporado e do VBScript. Este capítulo se concentra sobre as especificidades dos dois
modelos de objetos fornecidos para VBScript durante a execução dentro do Internet Explorer. Como você verá,
esses objetos fornecê-lo com a capacidade de desenvolver scripts que podem interagir com objetos do navegador
usando métodos do objeto navegador e propriedades. Isso permite que você abrir e fechar as janelas do
navegador, exibir mensagens pop-up, validar a entrada forma, criar efeitos visuais, e controlar inúmeros outros
aspectos da experiência dos usuários quando eles estão visitando suas páginas da Web. Este capítulo também vai
discutir eventos baseados em navegador e como desenvolver código que pode reagir a eles, a fim de tornar suas
páginas Web mais interativa.

Objetos do Internet Explorer


objetos baseados em navegador representam características ou componentes de uma
página Web ou navegador específicos. Eles estão programando construções que fornecem
propriedades e métodos, que VBScript pode usar para interagir com e recursos de controle
e componentes. Esses objetos são disponibilizados para VBScript pelo Internet Explorer,
que expõe os objetos com base no conteúdo de cada página da Web que ele carrega.
Começando com o Internet Explorer versão 3, cada nova versão do navegador introduziu
suporte para objetos adicionais do navegador. Muitos dos objetos encontrados na versão
atual do Internet Explorer, versão 6.x, não são encontrados em versões anteriores. Isso
contribui para um ambiente de programação desafiadora, porque você não pode controlar
qual versão do Internet Explorer, os visitantes vão usar para exibir suas páginas da Web.
Por exemplo,

Claro, você sempre pode desenvolver seus scripts com base no menor denominador comum (o
menor versão do Internet Explorer que você pretende apoiar), mas isso significa perdendo muitos
dos recursos disponibilizados no Internet Explorer versão 6. Tal é o caminho da a Internet.
Felizmente, se você é desen-
VBScript e INTERNET EXPLORER Capítulo 8 171

volvimento suas páginas da Web para executar em uma intranet corporativa, você costuma encontrar que todos os

usuários estão executando a mesma versão do Internet Explorer. Isso permite que você desenvolva VBScripts com base

nos recursos e funcionalidades suportadas pelo que determinada versão browser. Alternativamente, você pode

desenvolver diferentes versões de suas páginas da Web, adicione código para testar o tipo de navegador de cada

visitante, e redirecionar o navegador para o conjunto apropriado de páginas da Web.

NOTA

Desde a escrita deste livro, a Microsoft lançou quatro diferentes versões principais do Internet Explorer que
suportam VBScript (versões 3.x, 4.x, 5.x, 6.x). Todos os scripts que você vê neste livro foram desenvolvidos e
testados usando o Internet Explorer 6.0.

Internet Explorer organiza páginas da Web em uma estrutura de árvore lógica, com pais, filhos e
relacionamentos entre irmãos entre os objetos encontrados na página da Web. Para demonstrar como o
Internet Explorer aplica essa estrutura para uma página da Web típico, considere o seguinte exemplo.

<HTML>

<HEAD>

<TITLE> Script 8.1 - HTML objeto página Exemplo Organização </ TITLE> </ HEAD>

<BODY>

<P> Bem-vindo à página inicial do </ P> <P> ABC

Enterprises Inc. </ P> </ BODY>

</ HTML>

Figura 8.1 mostra como essa página da Web está logicamente representado pelo Internet Explorer. o documento
objeto está sempre no topo da hierarquia. o documento
filho do objeto é o < HTML> elemento. o < HTML> elemento tem dois filhos, os
<HEAD> e < BODY> elementos. o < HEAD> elemento tem um filho de seu próprio, e < BODY> elemento
tem dois filhos.
172 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 8.1 Examinando a maneira pela qual o Internet Explorer representa logicamente o conteúdo de uma página Web

Internet Explorer versões 3 e 4 suporte uma coleção de objetos chamado o modelo de objeto DHTML.
Começando com o Internet Explorer versão 5, o navegador começou a apoiar um segundo modelo de
objeto, o DOM. Internet Explorer versões 5 e 6 suporte o DOM como seu modelo de objeto primário,
proporcionando suporte para o modelo de objeto DHTML para fins de compatibilidade com versões
anteriores. O modelo de objeto DHTML fornece VBScript, com acesso para a maioria dos elementos
encontrados em páginas da Web, enquanto o DOM fornece acesso a todos os elementos.

NOTA

O DOM foi desenvolvido por um grupo chamado World Wide Web Consortium e foi incorporada em todos os
principais navegadores de Internet. Para saber mais sobre o DOM, veja www.w3c.org/DOM.
VBScript e INTERNET EXPLORER Capítulo 8 173

Examinando o modelo de objeto DHTML


O modelo de objeto DHTML organiza os elementos encontrados em páginas da Web em uma hierarquia
lógica. o janela objeto reside no topo do modelo de objeto DHTML. Cada página da Web tem uma janela objeto,
exceto para páginas que contêm quadros, caso em que há uma janela objeto para cada quadro que foi
definido para além de um único pai janela object.The janela objeto fornece o acesso a um número de
objectos secundários, como representado na Figura 8.2.

Figura 8.2 o janela objeto fornece acesso a outros objetos que permitem VBScript para interagir com e controlar os elementos
encontrados em páginas HTML

o janela objeto fornece propriedades e métodos que você pode usar para abrir e fechar janelas, texto de
exibição na barra de status do navegador ou em caixas de diálogo pop-up, e URLs de carga em páginas da
Web. A lista a seguir descreve as capacidades fornecidas pelos seus objetos filho.

◆ navegador objeto. Fornece acesso a informações sobre o navegador


sendo usado para visualizar uma página HTML

◆ história objeto. Fornece acesso ao documento lista de histórico do objeto


(Isto é, as páginas da Web visitados desde a janela do navegador foi aberto)

◆ documento objeto. Fornece acesso a elementos que residem no atual


página HTML

◆ localização objeto. Fornece informações sobre o atualmente carregado


página HTML e a capacidade de carregar uma nova URL

◆ quadros coleção. Fornece acesso a uma lista indexada representando cada


dos quadros definidos na página HTML de todo o janela filhos do objeto, você vai achar que o documento
objeto é a que você trabalha com a maioria. Como representado na figura 8.3, o documento objeto
fornece acesso a uma série de outros objetos que representam tipos específicos de elementos da
página HTML.
174 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 8.3 o documento objeto fornece acesso a uma série de outros objetos que permitem VBScript para interagir com os
elementos da página HTML específica

Para fazer referência a qualquer elemento em uma página HTML usando o modelo de objeto DHTML, você deve

fazer referência os objetos que fornecem acesso a ele de acordo com sua localização na hierarquia lógica fornecida

pelo modelo de objeto DHTML. Por exemplo, olhar para as seguintes declarações HTML.

<FORM NAME =”ApplicationForm”>

Último nome:

<INPUT NAME =”Nome” TYPE =”text” size =”10” MAXLENGTH =” 25” > </ FORM>

Estas declarações definir um formulário HTML chamado Formulário de aplicação que contém um campo de
texto chamado Primeiro nome. Embora você tem a opção de desenvolver páginas HTML que não atribuir
nomes a elementos HTML, nomes devem ser
VBScript e INTERNET EXPLORER Capítulo 8 175

atribuídos em ordem para VBScript para ser capaz de referenciar elementos da página usando o modelo de
objeto DHTML. Por exemplo, as seguintes declarações do VBScript pode ser adicionado a um VBScript
inserido na página HTML para determinar se ou não o visitante inseriu qualquer texto no campo de texto do
formulário.

Se Len (document.ApplicationForm.FirstName.value) <1 Então

MsgBox “último nome é um campo obrigatório” End If

Como você pode ver, para determinar se alguma coisa foi digitado no campo de texto, você deve
especificar sua localização, começando com o elemento superior da página HTML ( documento), seguido
pelo nome do formulário que contém ( Formulário de aplicação), o nome do campo de texto ( Primeiro nome), e
finalmente o valor propriedade.

Examinando o DOM
O DOM fornece controle total sobre todos os elementos encontrados em uma página HTML e torna-los mais
acessíveis do que o modelo de objeto DHTML faz. Além de ser capaz de acessar qualquer elemento em uma
página HTML, especificando sua localização dentro da hierarquia lógica da página HTML, o DOM permite-lhe
navegar para cima, para baixo e para os lados dentro da hierarquia sem ter que referenciar elementos pelo
nome. O DOM proporciona esta capacidade, utilizando as propriedades descritas na Tabela 8.1.

Tabela 8.1 DOM Propriedades

Property Descrição

primeiro filho primeiramente nó filho do objeto

lastChild último nó filho do objeto

childNodes Uma coleção / array de todos os objetos filho de um objeto

parentNode objeto pai do objeto

nextSibling O nó filho que se segue ao lado na árvore DOM

prevSibling O nó filho que antecede a criança atual

nodeName O nome da tag HTML

nodeType Especifica um valor que representa o tipo de elemento HTML (tag, atributo ou texto)

continuou
176 parte I Apresentando o Microsoft VBSCRIPT

Quadro 8.1 Propriedades DOM ( contínuo)

Propriedade Descrição

nodeValue O valor atribuído a um nó de texto

dados O valor do nó de texto especificado

Especificadas Especifica se um atributo foi definido

atributos Uma recolha / matriz de todos os atributos de um objecto

Para demonstrar como isso funciona, considere o seguinte página HTML:

<HTML>

<HEAD>

<TITLE> Script 8.2 - Um Exemplo DOM Navegação </ TITLE> </ HEAD>

<BODY ID =”BodyTag”>

<P ID =”TopParagraph” Name =”FirstTag”> Bem-vindo à página inicial do </ P> <P ID

=”BottomParagraph”> ABC Enterprises Inc. </ P> </ BODY> </ HTML>

Figura 8.4 mostra como esta página é visto pelo DOM. Como você pode ver, o documento objeto é o
objeto pai, e tem apenas uma criança, o < HTML> tag, que também é referido como o documentElement.

A declaração a seguir demonstra como usar o DOM para navegar os elementos localizados na
página HTML.

window.alert ( “O ID para o primeiro elemento é:“& _

document.documentElement.firstChild.tagName)

Esta declaração VBScript faz referência a < HEAD> tag na página HTML, especificando sua relação com
o documento objeto. A próxima instrução exibe o nome do < BODY> tag referenciando novamente o < BODY>
O relacionamento da marca para o
documento objeto.

window.alert ( “O ID para o segundo elemento é:“& _

document.documentElement.firstChild.nextSibling.tagName)
VBScript e INTERNET EXPLORER Capítulo 8 177

Figura 8.4 Examinando uma página HTML a partir do ponto de vista do DOM

O próximo comunicado VBScript mostra como exibir o valor do primeiro filho do < P> tag
cujo ID é BottomParagraph. Esta VBScript usa o DOM
getElementById () método para executar esta operação, como mostrado abaixo.

window.alert ( “o valor associado com a tag BottomParagraph“& _

elemento é: “& _

document.getElementById ( “BottomParagraph”). firstChild.nodeValue)

Usando o DOM, você também pode alterar o valor atribuído a elementos HTML, como demonstrado
pela seguinte declaração VBScript.

document.getElementById ( “BottomParagraph”). firstChild.nodeValue =”ABC Inc.”


178 parte I Apresentando o Microsoft VBSCRIPT

O valor associado com o Parágrafo fundo elemento

Figura 8.5 Exibindo os valores atribuídos a elementos HTML específicos

Esta declaração começa usando a documento objeto de getElementById ()


método para fazer referência a segunda < P> tag (isto é, BottomParagraph). Em seguida, ele faz referência ao nodeValue
propriedade do primeiro filho objeto do < P> tag. O resultado final é que o conteúdo da página HTML são
alterados dinamicamente, como mostrado na Figura 8.6.
VBScript e INTERNET EXPLORER Capítulo 8 179

Dinamicamente modificando o valor associado com o BottomParagraph elemento

FIGURA 8.6 Dinamicamente alterar o conteúdo de uma página HTML

Obviamente, o DOM fornece uma ferramenta poderosa para navegar páginas HTML e acessar e manipular sua
content.The DOM é demasiado complexo para cobrir integralmente todos os seus objetos, propriedades e
métodos neste livro. No entanto, você pode visitar
www.w3c.org/DOM aprender mais.

De Alto Nível navegador Objetos


Uma série de navegador de alto nível objetos mérito atenção específica. Esses objetos estão listados abaixo.

◆ janela
◆ documento
◆ localização
◆ história
◆ navegador
180 parte I Apresentando o Microsoft VBSCRIPT

Cada um desses objetos é descrito em detalhes nas seções a seguir, juntamente com exemplos
demonstrando como elas podem ser usadas por VBScripts embutidos em páginas HTML.

Trabalhando com o objeto de janela


o janela objecto é o objecto mais acima na hierarquia de modelo de objecto. É também o pai do documento,
localização, história, e navegador objetos. Apenas um janela objeto é estabelecido para uma página
HTML, a menos que essa página contém frames, no caso de um que janela objecto existe para cada
quadro e um pai janela objecto existe como o pai de todos os outros objectos.

NOTA

Na Figura 8.2, objectos de vários quadros estão representadas. Neste contexto, cada um dos quadros representados
representa um outro exemplo do janela objeto e em conjunto podem ser referidas como uma coleção.

Além de seus objetos filho e colecções, o janela objeto fornece acesso a um conjunto de
propriedades e métodos, que são demonstradas neste capítulo, bem como na Parte V deste
livro. Por exemplo, a página HTML a seguir contém um VBScript que demonstra como usar um
número da janela métodos do objeto.

<HTML>

<HEAD>

<TITLE> Script 8.3 - Trabalhando com métodos janela do objeto </ TITLE> </ HEAD>

<BODY onLoad =”window.status = 'Welcome to the Home page ABC Inc.”>

<H3> ABC Inc. Página! <H3>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

Option Explicit
VBScript e INTERNET EXPLORER Capítulo 8 181

blnValue Dim, strUserName

blnValue = window.confirm ( “Este site é o exclusivo“& _

“Propriedade da ABC Inc. Todo o material aqui é“& _ “estritamente confidencial. Clique

em OK para confirmar a sua “& _‘aceitação destes termos e acessar este site.’)

Se blnValue = “True” Então

strUserName = window.prompt ( “Por favor, digite seu nome.”, “”) window.alert (

“Welcome“e strUserName)

Outro

window.open “http://www.yahoo.com”, “Window1”, “barra de ferramentas = não”, _

“Menubar = Não”, “scroolbar = no”

window.close ()

Fim se

'Terminar escondendo declarações VBScript -> </ SCRIPT>

</ BODY>

</ HTML>

A premissa básica por trás deste exemplo é dar aos visitantes uma URL para uma página Web intermediário,
onde eles são solicitados a reconhecer a declaração de privacidade da empresa antes de ser redirecionado para
o site verdadeiro da empresa. Para começar, o
janela objeto de estado propriedade é usada para exibir uma mensagem de texto na barra de status do

navegador. Em seguida, a sua confirme() método é utilizado para solicitar ao visitante a reconhecer os direitos de
privacidade da empresa antes de acessar o site. Em seguida, o objeto do documento pronto método é usado
para coletar o nome do visitante, que é então utilizado pela alerta() método para saudar o visitante pelo nome.
Finalmente, uma nova janela do navegador é aberto usando o objeto de janela abrir() método, e que o visitante é
redirecionado para o site real da empresa ( www.yahoo.com foi utilizado neste exemplo, para ter um lugar para
o navegador para ir). Esta nova janela é configurado para abrir sem uma barra de rolagem, barra de menus ou
barra de ferramentas. Este exemplo termina com o fechar() método para fechar a janela original do navegador.
Figura 8.7 mostra como a segunda janela do navegador olha ao exibir o Web site ao qual o visitante é
redirecionado.
182 parte I Apresentando o Microsoft VBSCRIPT

Figura 8.7 Usando as propriedades e métodos que pertencem à documento objeto para controlar a atividade do navegador

Trabalhando com o objeto de documento


o documento objecto é o objecto mais utilizada. As propriedades e métodos do documento objeto
proporcionar o acesso a elementos localizados no seguinte exemplo HTML page.The atualmente
carregado demonstra como usar estes
documento objeto propriedades e métodos:

◆ bgColor. Recupera ou define a cor do atualmente carregado fundo


página HTML

◆ fgColor. Recupera ou define a cor de primeiro plano do atualmente carregado


página HTML

◆ escrever(). Exibe ou escreve cadeias de texto no HTML atualmente carregado


página

<HTML>

<HEAD>

<TITLE> Script 8.4- Trabalhando com o objeto de documento </ TITLE> </ HEAD>
VBScript e INTERNET EXPLORER Capítulo 8 183

<BODY>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

Option Explicit

document.bgColor =”black”

document.fgColor =”amarelo”

document.write ( “<B> Usando o método write () para exibir </ B> <P>”) document.write ( “<B>

propriedades do objeto documento! </ B> <P>”)

document.write ( “Título do Documento:“& document.title & ‘<P>’) document.write ( “Última modificação

em:“& document.lastModified & ‘<P>’)

'Terminar escondendo declarações VBScript -> </ SCRIPT>

</ BODY>

</ HTML>

Como você pode ver, o script começa mudando cores do fundo e de primeiro plano da página HTML
para preto e amarelo. Então o documento objeto de escrever()
método é usado para exibir uma série de linhas de saída na página HTML. A Figura 8.8 mostra a
página HTML gerada pelo exemplo.
184 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 8.8 Usando as propriedades e métodos que pertencem à documento objeto para controlar a tenda con- ea aparência de
uma página HTML

NOTA

o documento objeto fornece acesso a inúmeras outras propriedades que você vai ver usados ​na Parte V deste livro. Uma
propriedade particularmente útil é o biscoito propriedade, que lhe fornece a capacidade de armazenar pequenas quantidades
de dados no computador de cada visitante. Por exemplo, usando um cookie, você pode armazenar e mais tarde recuperar o
nome de um visitante e usá-lo para criar uma mensagem de saudação pessoal na próxima vez que um usuário retorna ao
seu Web site.

Trabalhando com o objeto Situação


o localização objeto fornece a capacidade de atualizar a página HTML exibida atualmente ou para
carregar um URL diferente usando sua substituir() e recarregar()
métodos. Além disso, o localização objeto de href propriedade pode ser usada para definir ou recuperar o nome do
URL atualmente carregado. Por exemplo, você pode adicionar a seguinte declaração para um VBScript
incorporado dentro de uma página HTML para carregar principal URL da Microsoft:

location.href =”http://www.microsoft.com”
VBScript e INTERNET EXPLORER Capítulo 8 185

Como um exemplo de trabalho, o seguinte VBScript mostra como usar o objeto do local href propriedade para
carregar um URL selecionado pelo usuário por meio de um elemento de formulário de seleção drop-down HTML.

<HTML>

<HEAD>

<TITLE> Script 8.5 - Usando o objeto de navegação para carregar páginas da web </ TITLE> </ HEAD>

<BODY>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

Option Explicit

OpenButton_onClick função ()

location.href = document.OnLineSitesForm.SupportList.value

End Function

'Terminar escondendo declarações VBScript -> </ SCRIPT>

<H2> On-Line Sites de Suporte </ H2>

<FORM NAME =”OnLineSitesForm”>

<SELECT NAME =”SupportList” size = 1>

<Value option =”http://www.microsoft.com”> Microsoft <OPÇÃO VALUE

=”http://www.compaq.com”> Compaq <OPÇÃO VALUE

=”http://www.dell.com”> Dell <OPÇÃO VALUE =”http://www.ibm.com”> IBM

<OPÇÃO VALUE =”http://www.gateway.com”> gateway </ SELECT>

<INPUT NAME =”OpenButton” TYPE =”button” VALUE =”Site Vendor Open”> </ FORM> </ BODY>

</ HTML>
186 parte I Apresentando o Microsoft VBSCRIPT

A página HTML e trabalho VBScript, desencadeando o clique evento para o


OpenButton formar elemento quando o visitante seleciona uma das entradas na lista drop-down do

formulário. Este, por sua vez executa o OpenButton_onClick função. Esta função utiliza o localização objeto
de href propriedade para carregar o URL associado com a seleção do visitante, como mostrado abaixo.

window.location = document.myForm.myList.value

Figura 8.9 mostra a página HTML que permite ao visitante fazer uma nova seleção URL. Depois de selecionar
um nome de fornecedor a partir da lista drop-down, o URL associado com que a seleção é carregado,
substituindo a URL atualmente carregado.

FIGURA 8.9 usando o localização objeto de href propriedade para desenvolver um controle de navegação personalizado

Trabalhando com o objeto History


o história objeto fornece uma outra maneira de controlar a navegação do navegador. Ao utilizar este objeto de
volta() e frente() métodos, você pode programaticamente navegar pela lista de URLs armazenadas no

histórico do navegador (a lista de URLs que foram abertos recentemente por este browser). Além disso,
você pode usar o história objeto de vai() método para carregar qualquer URL na lista. Por exemplo, a
seguinte declaração instrui o Internet Explorer para carregar a URL exibida anteriormente:
VBScript e INTERNET EXPLORER Capítulo 8 187

history.back ()

Da mesma forma, para avançar uma posição na lista de história, você poderia usar a seguinte declaração:

history.forward ()

Para atualizar a URL atualmente carregado, use a seguinte declaração:

history.go (0)

Para saltar para trás ou para a frente uma série de posições na lista de história, passar o
vai() Método um número positivo ou negativo.

Trabalhando com o objeto de navegador


o navegador objeto tem propriedades que você pode usar para coletar informações sobre o sistema operacional

que o visitante está usando ea versão do Internet Explorer que tem sido utilizado para carregar a página HTML.

Usando essas propriedades, você pode desenvolver um script que pode ajustar a sua apresentação baseada na

versão do Internet Explorer que está sendo usado. Alternativamente, você pode usar esta informação para que

você possa redirecionar os visitantes para páginas HTML projetados especificamente para apoiar a sua versão do

Internet Explorer. o navegador objeto fornece acesso ao seguinte conjunto de propriedades:

◆ appCodeName. Retorna o nome de código atribuído à versão do


navegador que tenha carregado a página HTML

◆ uma ppName. Retorna o nome do navegador que carregou o HTML


página

◆ appVersion. Retorna a versão sobre o navegador que tem


carregada a página HTML

O exemplo a seguir demonstra uma maneira de usar o nome do aplicativo e appVersion properties.The VBScript
neste exemplo interroga o navegador do visitante e quer redireciona o navegador para outra URL ou exibe uma
mensagem informando que é necessário uma versão específica do Internet Explorer. Esta técnica pode ser útil
quando uma empresa pretende padronizar os recursos fornecidos por uma versão específica do Internet
Explorer. Ele exibe uma mensagem informando seus visitantes que a versão Internet Explorer 5 ou superior é
necessário para acessar o site da empresa. Este exemplo também funciona para navegadores não-Internet
Explorer, exibindo a mesma mensagem.
188 parte I Apresentando o Microsoft VBSCRIPT

<HTML>

<HEAD>

<TITLE> Script 8.6 - Detectar tipo de navegador e versão </ TITLE> </ HEAD>

<BODY>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

Option Explicit

Dim strBrowserName, strBrowserVersion, strFindString Dim intVersionNumber

strBrowserName = navigator.appName

Se strBrowserName = “Microsoft Internet Explorer” Então

strBrowserVersion = navigator.appVersion

strFindString = Instr (1, strBrowserVersion, “MSIE”) strFindString = + 5

strFindString

intVersionNumber = idade (strBrowserVersion, strFindString, 1)

Se intVersionNumber <5, em seguida,

'Document.write ( ‘Este Web site requer IE ver. 5 ou superior’) Else

window.location =”http://www.yahoo.com” End If End If

'Terminar escondendo declarações VBScript -> </ SCRIPT>

Para aceder a este uso web site Internet Explorer 5 ou superior.


VBScript e INTERNET EXPLORER Capítulo 8 189

</ BODY>

</ HTML>

Este exemplo começa definindo uma variável chamada strBrowserName igual a navigator.appName. Em
seguida, verifica para ver se o valor atribuído a essa variável é igual a Microsoft Internet Explorer. Se
for, então o valor da navigator.version é atribuído a uma variável chamada strBrowserVersion. Os três
seguintes afirmações em seguida, analisar o número da versão do navegador.

strFindString = Instr (1, strBrowserVersion, “MSIE”) strFindString = + 5

strFindString

intVersionNumber = idade (strBrowserVersion, strFindString, 1)

Por exemplo, o valor atribuído à strBrowserName será definida igual à seguinte se o Internet Explorer
6.x versão tem sido usado para carregar a página HTML.

4.0 (compatível; MSIE 6.0; Windows NT 5.1; Q312461)

A primeira instrução usa a VBScript Instr () função de definir um valor que indica a posição inicial das
cartas no MSIE strFindString. A segunda instrução, em seguida, adiciona 5 a este número. A terceira
declaração, em seguida, usa o VBScript
Mediana () funcionar para descascar número da versão principal do navegador (ou seja, 6). Se o número da

versão do navegador é inferior a 5 (por exemplo, Internet Explorer versão 4.x), em seguida, uma mensagem é

exibida na página da Web informando o visitante que a versão Internet Explorer 5.x ou acima é necessário para

acessar o site. Se o número da versão é de 5 ou superior, então o localização objeto de href propriedade é usada

para carregar o URL especificado.

NOTA

Se um visitante está usando o Netscape Communicator ou qualquer outro navegador compatível não-Internet
Explorer, o navegador ignora automaticamente o VBScript incorporado e, em vez exibe a seguinte mensagem
localizada na parte inferior da página HTML:

Desculpa. Para aceder a este web site uso Internet Explorer versão 5 ou superior.
190 parte I Apresentando o Microsoft VBSCRIPT

Tratamento de eventos do navegador


A fim de realmente interagir com os visitantes do seu site, você precisa desenvolver VBScripts que reagem
aos visitantes como eles navegar e interagir com o seu Web site. Sempre que algo acontece com suas
páginas HTML, ocorre um evento. Por exemplo, quando uma página HTML é carregada no navegador, o carga
evento ocorre, e quando é descarregado, o descarregar evento ocorre. Eventos também ocorrem quando os
visitantes mover o ponteiro para e fora de links, botões e imagens ou quando os visitantes interagem com
vários elementos em formulários HTML.

Você pode usar VBScript para criar manipuladores de eventos para reagir a eventos que eles ocorrem. A

manipulador de eventos é um gatilho que dispara quando um evento ocorre. Por exemplo, você pode criar um

manipulador de eventos que exibe uma mensagem de boas-vindas em uma caixa de diálogo pop-up quando os visitantes

primeiro carregar suas páginas HTML ou de agradecer o usuário para visitar apenas antes de o navegador descarrega

sua página HTML. Além disso, você pode usar um manipulador de eventos para criar efeitos gráficos mudando as cores

de texto como visitantes mover o ponteiro sobre os links. Você também pode usar manipuladores de eventos para validar

os campos em um formulário HTML como o usuário interage com eles.

Os manipuladores de eventos estão associados com objetos específicos. Em outras palavras, se você tem uma página

HTML que define quatro links, então você pode criar manipuladores de eventos separados que administram interatividade

do usuário para cada link individual.

Tabela 8.2 fornece uma lista de eventos do navegador e seus manipuladores de eventos associados. Como você pode

ver, o nome de um manipulador de eventos é determinado pelo acrescentando a palavra

em ao início do nome do evento que está associado.

Tabela 8.2 Documentos Eventos modelo de objeto e manipuladores de eventos Propriedade

Evento Descrição

Abortar OnAbort Executa quando o visitante aborta uma imagem enquanto ele está carregando

Borrão onBlur Executa quando o objeto selecionado perde o foco

mudança em mudança Executa quando o visitante muda um objeto

Clique onClick Executa quando o visitante clica em um objeto

FazerDuploClique onDblClick Executa quando o visitante clica duas vezes em um objeto

Arraste e solte OnDragDrop Executa quando o visitante arrasta e deixa cair um objecto sobre uma

estrutura ou janela
VBScript e INTERNET EXPLORER Capítulo 8 191

Tabela 8.2 Documentos Eventos modelo de objeto e manipuladores de eventos ( contínuo)

Propriedade Evento Descrição

Erro onError Executa quando ocorre um erro na página HTML

Foco No foco Executa quando um visitante selecciona um objecto

KeyDown onKeyDown Executa quando um visitante pressiona uma tecla

Pressione o botão onKeyPress Executa quando um prensas visitante e libera uma tecla

KeyUp onKeyUp Executa quando um visitante libera uma tecla

Carga carregando Executa quando uma página HTML ou imagem terminar o carregamento

MouseDown onMouseDown Executa quando um visitante pressiona um botão do mouse

MouseMove onMouseMove Executa quando um visitante move o ponteiro

MouseOut onMouseOut Executa quando um visitante move o ponteiro para fora de um objeto

Passe o rato por cima onMouseOver Executa quando um visitante move o cursor sobre um objeto

MouseUp onMouseUp Executa quando um visitante libera um botão do mouse

Roda do mouse onMouseWheel Executa quando uma roda do rato é rodado

Mover Em movimento Executa quando o visitante se move um quadro ou janela

Restabelecer onreset Executa quando um visitante clica em um botão de reset

redimensionar onResize Executa quando o visitante redimensiona um quadro ou janela

selecionar onSelect Executa quando um visitante seleciona o conteúdo de um campo de texto forma

Enviar onSubmit Executa quando um visitante clica em um botão de envio

Descarregar onUnload Executa quando um visitante fecha a janela do navegador ou quadro ou

carrega uma URL diferente

Há uma série de maneiras diferentes para configurar manipuladores de eventos dentro de suas páginas HTML. Por

exemplo, você pode incorporá-los diretamente para tags HTML, como demonstrado abaixo.

<Body onload =”window.status = 'Bem-vindo à Página Inicial ABC Enterprises Inc.'!'”>

Esta declaração exibe uma mensagem de boas vindas na barra de status do navegador quando a página HTML é

carregada inicialmente. Uma segunda maneira de criar manipuladores de eventos é definir


192 parte I Apresentando o Microsoft VBSCRIPT

-los como procedimentos. A fim de fazer isso, você deve nomear seus procedimentos após os eventos para os
quais você pretende-los para reagir. Você pode fazer isso, fornecendo o nome de um elemento de página HTML
seguido pelo caractere sublinhado e, em seguida, o nome do manipulador de eventos para que o procedimento é
projetado para acomodar. Por exemplo, para criar um manipulador de eventos que reage a qualquer momento o
usuário move o ponteiro sobre um link chamado strCorpLogo, você precisa nomear seu procedimento como
demonstrado abaixo.

sub strCorpLogo_onMouseOver

window.status = “ABC Enterprises, Inc - Onde seus problemas“& _

“Tornar-se nossos problemas!” End

Sub

Contudo uma outra maneira de configurar manipuladores de eventos é incorporá-los dentro do HTML

<SCRIPT> tag, tal como demonstrado abaixo.

<SCRIPT PARA =”strCorpLogo” EVENT =”onMouseOver” LANGUAGE =”VBScript”

window.status = “ABC Enterprises, Inc - Onde seus problemas“& _

“Tornar-se nossos problemas!” </

SCRIPT>

Como a Tabela 8.2 mostra, há uma série de tipos de eventos e manipuladores de eventos. As próximas seções
mostram como escrever VBScripts que interagem com vários eventos do navegador.

Janela e quadro Eventos


Você pode configurar manipuladores de eventos que respondem a vários tipos de eventos janela e quadro. Estes

manipuladores de eventos incluem:

◆ carregando

◆ onResize
◆ onUnload
◆ Em movimento

Para responder ao carga, redimensionar, descarregar, e mover eventos, você deve colocar estes
manipuladores de eventos dentro de abertura da página HTML < BODY> tag. Por exemplo, a página HTML
a seguir demonstra como fazer uso do carregando() e
onUnload () manipuladores de eventos.

<HTML>
VBScript e INTERNET EXPLORER Capítulo 8 193

<HEAD>

<TITLE> Script 8.7 - Utilizando os manipuladores de evento onload e onunload </ TITLE>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

Função saudação ()

MsgBox ( “Saudações e bem-vindo ao nosso web site!”) End Function

Função Adeus ()

MsgBox ( “Obrigado por visitar e por favor, voltar em breve!”) End Function

'Terminar escondendo declarações VBScript -> </ SCRIPT>

</ HEAD>

<Body onload = Saudação ()

onUnload = Goodbye ()>

<H4> ABC Enterprises Inc. Página </ H4> </ BODY>

</ HTML>

Como você pode ver, a tag <BODY> foi modificado, adicionando as seguintes declarações:

◆ onLoad = cartões ()
◆ onUnload = Adeus ()

Estas duas declarações executar dois procedimentos VBScript localizados na seção HEAD da página
HTML. A primeira instrução é executada quando a página HTML é inicialmente carregada pelo navegador
ou quando o visitante atualiza a página. A segunda instrução é executada quando o visitante carrega uma
URL diferente ou fecha o browser. Em ambos os casos, uma mensagem pop-up é exibida que quer
recebe o visitante ou diz adeus. Figura 8.10 mostra a caixa de diálogo pop-up quando o script

Adeus() Executa a função (isto é, quando o Descarregar evento é acionado).


194 parte I Apresentando o Microsoft VBSCRIPT

Figura 8.10 usando o carregando e onUnload manipuladores de eventos para acionar a exibição de mensagens de texto

Mouse e teclado eventos


Como um último exemplo de como configurar manipuladores de eventos, o seguinte VBScript usa o onMouseOver e
onMouseOut manipuladores de eventos para criar um efeito de menu de rolagem gráfica para vários links em

HTML. A fim de criar efeitos de sobreposição para as ligações, o NOME atributo deve ser adicionado a cada ligação
definida na página HTML. Em seguida, um par de procedimentos tem de ser definido para cada ligação, uma para
o
onMouseOver manipulador de eventos e outra para o onMouseOut manipulador de eventos. Cada procedimento

deve, então, modificar a propriedade cor atribuída ao texto do link.

<HTML>

<HEAD>

<TITLE> Script 8.8 - eventos Use o mouse para criar rollovers </ TITLE>

<SCRIPT LANGUAGE =”VBScript”> <! - Comece escondendo

declarações do VBScript

gateway_onMouseOver função

gateway.style.color = End

Function”vermelho”

função gateway_onMouseOut

gateway.style.color =”blue” End

Function

compaq_onMouseOver função

compaq.style.color = End

Function”vermelho”

compaq_onMouseOut função

compaq.style.color =”Blue” End Function


VBScript e INTERNET EXPLORER Capítulo 8 195

dell_onMouseOver função

dell.style.color = End

Function”vermelho”

dell_onMouseOut função

dell.style.color =”blue” End Function

'End escondendo declarações VBScript -> </ SCRIPT> </

HEAD>

<BODY>

<B> Selecionar um site do fornecedor: </ B> <P>

<A HREF="http://www.gateway.com" NAME="gateway"> gateway </A> <P> <A

HREF="http://www.compaq.com" NAME="compaq"> Compaq </A> <P> <A

HREF="http://www.dell.com" NAME="dell"> Dell </A> <P> </ BODY> </ HTML>

Figura 8.11 mostra como a página Web aparece quando carregados pelo Internet Explorer. Infelizmente,
este valor não pode fazer o exemplo justiça. A fim de examinar esta figura em maior detalhe, baixá-lo www.premierpressbooks.c
Como você verá quando você executá-lo, a cor muda de vermelho para azul quando você passa o ponteiro
sobre e para fora de cada link.
196 parte I Apresentando o Microsoft VBSCRIPT

FIGURA 8,11 usando o onMouseOver e onMouseOut manipuladores de eventos para criar efeitos de sobreposição gráfica

resumo
Neste capítulo, você aprendeu sobre os modelos de objetos DOM e DHTML. Você também aprendeu a
desenvolver scripts que interagem com os objetos fornecidos por esses modelos de objeto a fim de reforçar o seu
controle sobre suas páginas HTML. Além disso, você aprendeu sobre os eventos do navegador e como
configurar manipuladores de eventos, a fim de desenvolver procedimentos que permitem criar páginas HTML
interativas.
Capítulo 9
VBScript eo WSH
Eu n Neste capítulo, você vai aprender sobre os objetos, propriedades e métodos fornecidos pelo WSH. Mais
tarde, você vai aprender como usar esses objetos para acessar e manipular uma série de recursos do Windows. Este
capítulo também irá demonstrar como criar scripts que podem receber e argumentos de processos passados ​em
tempo de execução. Finalmente, você vai aprender como criar um novo tipo de arquivo de script usando XML ( Extensive
Markup Language) que permitirá que você para combinar duas ou mais scripts separados, escritos em diferentes
linguagens de script, juntos em um novo arquivo de script do Windows.

O modelo de objeto WSH


No coração do WSH é o seu modelo núcleo objeto. Os objetos que compõem este modelo fornecer
acesso direto aos recursos do Windows que eles representam. No total, o modelo objecto do núcleo
WSH é composta de 14 objectos. Estes objectos e a sua relação uma à outra estão representados na
Figura 9.1.

Figura 9.1 O modelo de objecto núcleo WSH é composta de 14 objectos individuais

o WScript objecto reside no topo ou raiz do modelo de objecto. o WScript


objeto é implicitamente instanciado pela WSH no início da execução do script, o que significa que os scripts podem

acessar automaticamente qualquer de suas propriedades ou métodos. Todos os outros objetos no modelo de objeto

do núcleo WSH deve primeiro ser instanciado para usar suas propriedades e métodos.
VBScript e WSH Capítulo 9 199

objetos públicas
o WScript objeto é automaticamente exposta no início da execução do script. o
WScript objeto também é referido como um objeto público. O modelo de objeto de núcleo WSH tem três
outros objetos públicos, que são a WshController, WshShell, e
WshNetwork objetos. A fim de instanciar qualquer um desses três objetos, você deve usar o WScript objeto
de CreateObject () método. Os restantes objectos núcleo WSH é instanciado usando uma das
propriedades ou métodos destes quatro objectos comuns.

NOTA

o WScript objeto de CreateObject () método fornece os meios de instanciar outros objectos no modelo de
objecto núcleo WSH.

Tabela 9.1 fornece uma lista de outros objectos 10 que constituem o modelo de objecto núcleo WSH e uma lista de

propriedades de objectos ou métodos que são necessários para instanciar-los.

Tabela 9.1 Trabalhando com nível inferior WSH objeto objetos

Método de instanciação

WshArguments WScript.Arguments

WshNamed WScript.Arguments.Named

WshUnnamed WScript.Arguments.Unnamed

WshRemote WshController.CreateScript ()

WshRemoteError WshRemote.Error

WshShortcut WshShell.CreateShortcut ()

WshUrlShortcut WshShell.CreateShortcut ()

WshEnvironment WshShell.Environment

WshSpecialFolders WshShell.SpecialFolders

WshScriptExec WshShell.Exec ()
200 parte I Apresentando o Microsoft VBSCRIPT

Propriedades WSH Objeto e Métodos


Cada objeto no modelo de objeto do núcleo WSH tem seu próprio conjunto de propriedades e métodos. A
Tabela 9.2 apresenta uma breve descrição dos objectos principais WSH. Além disso, fornece uma lista de
propriedades e métodos associados com cada objeto.

Tabela 9.2 WSH Núcleo objeto objetos

Descrição

WScript Este é o objeto WSH raiz. Ele fornece o acesso a um número de propriedades e
métodos úteis. Ele também fornece acesso ao resto dos objetos no modelo de
objeto do núcleo WSH. propriedades: Argumentos, FullName, Interactive, Nome,
Caminho, ScriptFullName, ScriptName, StdErr, StdIn, StdOut, e Versão

Métodos: ConnectObject (), CreateObject (), DisconnectObject (), eco (),


GetObject (), Sair (),
e Dormir()

WshArguments Este objeto permite-lhe aceder a linha de comando argumentos passados ​para o script em

tempo de execução. propriedades: Contagem, Item, e Comprimento; nomeado e Sem nome

Métodos: Contagem() e ShowUsage ()

WshNamed Este objeto fornece acesso a um conjunto de linha de comando argumentos nomeados.

propriedades: Item e comprimento

Métodos: Contagem() e Existe()

WshUnnamed Este objeto fornece acesso a um conjunto de argumentos de linha de comando sem nome.

propriedades: Item e comprimento

Métodos: Contagem()

WshController Este objeto fornece a capacidade de criar um processo de script remoto. Propriedades:

Este objeto não suporta quaisquer propriedades. Métodos: CreateScript

WshRemote Este objeto fornece a capacidade de administrar sistemas de computadores remotos

usando scripts através de uma rede. propriedades: estado e Erro

Métodos: Executar() e Terminar ()


VBScript e WSH Capítulo 9 201

Objectos Tabela 9.2 WSH núcleo ( contínuo)

Objeto Descrição

WshRemoteError Este objeto fornece acesso a informações sobre os erros produzidos por scripts

remotos. propriedades: Descrição, Linha, Caráter, SourceText, Fonte, e Número

Métodos: Este objeto não suporta quaisquer métodos.

WshNetwork Este objeto fornece acesso a um número de diferentes recursos de rede, tais

como impressoras e unidades de rede. propriedades: ComputerName,

UserDomain, e UserName

Métodos: AddWindowsPrinterConnection (), AddPrinterConnection (), EnumNetworkDrives


(), EnumPrinterConnection (), MapNetworkDrive (),
RemoveNetworkDrive (), RemovePrinterConnection (), e

SetDefaultPrinter ()

WshShell Este objeto fornece acesso ao registro do Windows, log de eventos,

variáveis ​ambientais, atalhos e aplicativos. propriedades: CurrentDirectory,

Meio Ambiente, e
SpecialFolders

Métodos: AppActivate (), CreateShortcut (), ExpandEnvironmentStrings (),


LogEvent (), Popup (), RegDelete (), RegRead (), RegWrite (), Run (),
SendKeys (), e Exec ()

WshShortcut Este objeto fornece scripts com métodos e propriedades para criar e

manipular os atalhos do Windows. propriedades: Argumentos, Descrição,

FullName, Hotkey,
Eu conLocation, TargetPath, WindowStyle, e
Diretório de trabalho

Método: Salve •()

WshUrlShortcut Este objecto fornece scripts com métodos e propriedades para criar e manipular os

atalhos URL. propriedades: Nome completo e Caminho de Destino

Métodos: Salve •()

continuou
202 parte I Apresentando o Microsoft VBSCRIPT

Objectos Tabela 9.2 WSH núcleo ( contínuo)

Objeto Descrição

WshEnvironment Este objeto fornece acesso a variáveis ​ambientais Windows. propriedades: Item e comprimento

Métodos: Remover() e Contagem()

WshSpecialFolders Este objeto fornece acesso a pastas especiais do Windows que permitem
scripts para configurar o menu Iniciar, desktop, barra Quick Launch, e outras pastas

especiais do Windows. propriedades: Item

Métodos: Contagem()

WshScriptExec Este objeto fornece acesso a informações de erro de executar scripts usando o

método Exec. propriedades: Status, StdOut, StdIn, e StdErr

Métodos: Terminar ()

Há muitos objetos WSH para cobri-los todos em um único capítulo. Portanto, este capítulo será
limitado a fornecê-lo com uma referência de objeto WSH, oferecendo alguns exemplos de como
trabalhar com alguns dos objetos WSH. Os capítulos restantes deste livro vai lhe dar a oportunidade
de trabalhar com muitas das propriedades e métodos que pertencem aos objetos mostrados na
Tabela 9.2.

Propriedades do objeto do núcleo


As propriedades do objeto armazenar informações sobre os recursos que eles representam. Referenciando
as propriedades do objeto, VBScript pode coletar informações sobre o ambiente em que eles executam.
Além disso, modificando as propriedades do objeto, VBScripts pode fazer alterações directas para este
ambiente e os recursos do Windows que residem dentro dela.

Os objectos do núcleo WSH fornecer acesso a dezenas de propriedades diferentes. A Tabela 9.3 lista cada uma destas

propriedades.

NOTA

Em alguns casos, a mesma propriedade pode ser compartilhada por mais de um objeto. Use Tabela 9.2 para
determinar quais as propriedades que estão associadas com objectos.
VBScript e WSH Capítulo 9 203

Tabela 9.3 WSH Propriedades do objeto Propriedade

Descrição

argumentos Define uma referência para o ponteiro WshArguments coleção

AtEndOfLine retorna um Verdade ou Falso dependendo se o fabricante de ofline final foi


alcançado na corrente

AtEndOfStream retorna um Verdade ou Falso dependendo se o final do fluxo de entrada foi


atingido

Personagem Identifica o carácter específico em uma linha de código onde ocorre um erro

Coluna Retorna a posição da coluna corrente no fluxo de entrada

Nome do computador Recupera o nome de um computador

Diretório atual Define ou recupera diretório de trabalho atual de um roteiro

Descrição Recupera a descrição para um atalho especificado

Meio Ambiente Define uma referência para o ponteiro WshEnvironment

Erro Oferece a capacidade de expor um WshRemoteError objeto

ExitCode Retorna o código de saída de um script começou a usar Exec ()

Nome completo Recupera o caminho de um programa de atalho ou executável

HotKey Recupera a tecla de acesso associada com o atalho especificado

IconLocation Recupera a localização de um ícone

Interativo Fornece a capacidade de definir programaticamente modo de script

Item Recupera o item especificado de uma coleção ou fornece acesso a itens armazenados
na WshNamed objeto

comprimento Recupera uma contagem de itens enumerados

Linha Retorna o número da linha para a linha atual no fluxo de entrada ou identifica o número
da linha dentro de um script onde ocorreu um erro

Nome Retorna uma string que representa o nome do WScript objeto

Número Fornece acesso a um número de erro

Caminho Retorna a localização da pasta onde o CScript ou


WScript hosts de execução residem

ProcessID Recupera o PID ( ID de processo) para um processo começou a usar o

WshScriptExec objeto

ScriptFullName Retorna o caminho de um script de execução

continuou
204 parte I Apresentando o Microsoft VBSCRIPT

Propriedades Tabela 9.3 WSH objeto ( contínuo)

Propriedade Descrição

ScriptName Retorna o nome do script de execução

Fonte Recupera a identidade do objeto que causou um erro de script

Texto original Recupera o código fonte que criou o erro

SpecialFolders Fornece acesso ao menu e desktop pastas Iniciar do Windows

estado Fornece informações de status sobre um script de executar remotamente ou um script começou

com Exec ()

StdErr Permite que um script para gravar o fluxo de saída de erro ou fornece acesso para somente

leitura saída de erro a partir de uma Exec objeto

StdIn Permite o acesso de leitura para o fluxo de entrada ou fornece acesso ao grito de entrada

somente para escrita para o Exec objeto

StdOut Permite acesso de gravação para o fluxo de saída ou fornece acesso para o fluxo de saída

somente para gravação do Exec objeto

Caminho de Destino Recupera o caminho de um atalho para o seu objeto associado

UserDomain Recupera o nome de domínio

UserName Recupera conectado no momento o nome de usuário

Versão Recupera o número da versão do WSH

WindowStyle Recupera estilo janela de um atalho

Diretório de trabalho Retorna o diretório de trabalho associado com o atalho especificado

Usando Propriedades do objeto WSH


Como um exemplo de como trabalhar com propriedades WSH objeto, reveja o seguinte VBScript. Neste
script, as propriedades pertencentes ao WshNetwork objeto são referenciados a fim de recolher informações
sobre a rede.

'************************************************* ************************ 'Script Nome: 9.1.vbs script' Autor: Jerry

Ford 'Criado: 02/12/03

'Descrição: Este script demonstra como usar propriedades pertencentes a' o objeto WshNetwork a fim de obter

informações sobre a rede '*************************** **********************************************


VBScript e WSH Capítulo 9 205

'Seção de inicialização

Option Explicit

Dim WshNtwk, strDisplayText

'Instanciar o objeto WshNetwork

Definir WshNtwk = WScript.CreateObject ( “WScript.Network”)

'Secção de Processamento Principal

'Chame o procedimento que coleta e exibe informações da rede DisplayNetInfo ()

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento

'Esta informação sub-rotina Rede de Display Sub DisplayNetInfo ()

strDisplayText = “Este computador é“& WshNtwk.ComputerName & “. “& _

“Ele é conectado ao seguinte domínio:” & vbCrLf & vbCrLf & _ WshNtwk.UserDomain & vbCrLf &

vbCrLf & vbCrLf

MsgBox strDisplayText, “Rede de Informação”

End Sub

Esse script começa definindo duas variáveis, WshNtwk e strDisplayText. WshNtwk é então usada para
instanciar o WshNetwork objeto, como mostrado abaixo.

Dim WshNtwk, strDisplayText

Definir WshNtwk = WScript.CreateObject ( “WScript.Network”)


206 parte I Apresentando o Microsoft VBSCRIPT

Como você pode ver, tanto o Conjunto declaração eo WScript objeto de CreateObject () método são necessárias
para configurar uma instância do WshNetwork objeto. Uma vez instanciado, você pode fazer referência a qualquer
uma das propriedades e métodos do objeto. Em seguida, o script é executado um procedimento chamado DisplayNetInfo
(). Esta sub-rotina contém duas declarações. A primeira instrução cria uma seqüência de exibição usando o

strDisplayText variável e a sequência WshNetwork Propriedades:

◆ Nome do computador. Recupera o nome da rede atribuído ao computador


onde o script é executado

◆ UserDomain. Recupera o nome de domínio do domínio do Windows para


qual o computador pertence, ou se o computador é um membro de uma rede baseada em
grupo de trabalho, recupera o nome do grupo de trabalho ao qual o computador foi atribuído A
segunda declaração na DisplayNetInfo () subrotina mostra a cadeia de exibição, como demonstrado
na Figura 9.2. Finalmente, o controle retorna para a secção Processamento Main, onde o WScript objeto
de Sair() método é usado para terminar a execução do script.

Figura 9.2 Exibição de informações de rede coletadas de propriedades pertencentes à


WshNetwork objeto

Métodos de objeto de núcleo


métodos de WSH objeto fornecer a capacidade de interagir com e manipular os recursos que eles
represent.These recursos incluem atalhos desktop, os sistemas de arquivos do Windows, impressoras e
registro do Windows. Tabela 9.4 fornece uma lista de métodos de objeto núcleo WSH.
VBScript e WSH Capítulo 9 207

Tabela 9.4 WSH Método Métodos de objeto

Descrição

AddPrinterConnection () Cria mapeamentos de impressora

AddWindowsPrinterConnection () Cria uma nova conexão da impressora

AppActivate () Ativa a janela da aplicação alvo

Fechar() Termina ou termina um fluxo de dados aberta

ConnectObject () Estabelece uma ligação a um objecto

Contagem Recupera o número de interruptores encontrado no

WshNamed e WshUnnamed objetos

CreateObject () Cria uma nova instância de um objecto

CreateScript () instancia um WshRemote objeto representando um script que está sendo

executado remotamente

Criar atalho() Cria um atalho do Windows

DisconnectObject () Finaliza uma conexão com um objecto

Eco() Exibe uma mensagem de texto

EnumNetworkDrives () Permite o acesso a unidades de rede

EnumPrinterConnections () Permite o acesso a impressoras de rede

Exec () Executa um aplicativo em um shell de comando criança e fornece


acesso para as variáveis ​de ambiente

Executar() Inicia a execução de um objeto script remoto

Existe() Determina existe uma chave especificada no interior da

WshNamed objeto

ExpandEnvironmentStrings () Recupera uma cadeia que representa o conteúdo do


Processo variável ambiental

GetObject () recupera um Automação objeto

GetResource () Recupera o valor de um recurso conforme especificado pelo

<Recurso> etiqueta

RegistrarEvento () Grava uma mensagem no log de eventos do Windows

MapNetworkDrive () Cria um mapeamento unidade de rede

Aparecer() Exibe uma mensagem de texto em uma caixa de diálogo pop-up

Sair() Termina ou termina um script

continuou
208 parte I Apresentando o Microsoft VBSCRIPT

Métodos Tabela 9.4 WSH objeto ( contínuo)

Método Descrição

Ler() Recupera uma seqüência de caracteres do fluxo de entrada

Leia tudo() recupera o s string que é composta dos caracteres no fluxo


de entrada

Leia a linha() Recupera uma cadeia que contém uma linha inteira de dados a partir do

fluxo de entrada

RegDelete () Exclui uma chave do registro ou valor

RegRead () Recupera uma chave do registro ou valor

RegWrite () Cria uma chave do registro ou valor

Remover() Exclui a variável ambiental especificado

RemoveNetworkDrive () Exclui a conexão com a unidade de rede especificado

RemovePrinterConnection () Exclui a ligação para a impressora de rede especificada

Corre() Inicia um novo processo

Salve •() Salva um atalho

ComandosPorTeclado () Emula as teclas digitadas e envia dados digitados para uma janela

especificada

SetDefaultPrinter () Estabelece uma impressora padrão do Windows

ShowUsage () Recupera informações sobre a forma que um script é


suposto ser executado

Pular() salta X número de caracteres ao ler do fluxo de entrada

SkipLine () Pula uma linha inteira quando a leitura do fluxo de entrada

Dormir() Interrompe a execução do script para X número de segundos

Terminar () Pára um processo iniciado por Exec ()

Escrever() Coloca uma string no fluxo de saída

WriteBlankLines () Coloca uma peça em bruto no fluxo de saída

WriteLine () Coloca uma string no fluxo de saída


VBScript e WSH Capítulo 9 209

Usando Métodos de objeto WSH


Como um exemplo de como trabalhar com métodos de WSH objeto, examine o seguinte VBScript. Neste
VBScript, métodos pertencente ao WshShell objecto são utilizados para configurar uma ligação unidade
mapeada para uma pasta de rede.

'************************************************* ************************ 'Script Nome: 9.2.vbs script' Autor: Jerry

Ford 'Criado: 02/12/03

'Descrição: Este script demonstra como usar métodos que pertencem a' o objeto WshNetwork a fim de

mapear uma unidade de rede '************************** ***********************************************

'Seção de inicialização

Option Explicit

Dim WshNtwk, strDriveLetter, strDrivePath

strDriveLetter = “z:” strDrivePath = “\\

FamilyPC \ D”

'Instanciar o objeto WshNetwork

Definir WshNtwk = WScript.CreateObject ( “WScript.Network”)

'Secção de Processamento Principal

'Chame o procedimento que mapeia unidades de rede MapDrive

strDriveLetter, strDrivePath

'Terminar roteiro WScript.Quit execução

()

'Secção Procedimento
210 parte I Apresentando o Microsoft VBSCRIPT

'Esta sub-rotina cria um mapeamento de unidade de rede

Sub MapDrive (strLetter, strPath)

'Criar um mapeamento para a unidade de rede especificado

WshNtwk.MapNetworkDrive strLetter, strPath

End Sub

Seção de inicialização do script contém instruções que executam as seguintes tarefas:

◆ Definir variáveis ​para representar a WshNetwork objeto, uma letra de unidade e


o endereço de uma pasta de rede

◆ Atribuir uma letra de unidade e o endereço da pasta de rede

◆ instanciar o WshNetwork objeto seguida, a Seção de Processamento Principal executa o MapDrive () procedimento,

passando a letra de unidade e o endereço da pasta de rede, como mostrado abaixo.

MapDrive strDriveLetter, strDrivePath

o MapDrive () sub-rotina recebe os argumentos passados ​para ele e atribui-los a duas novas variáveis. Em
seguida, ele usa o WshNetwork objeto de MapNetworkDrive () método para estabelecer o mapeamento da
unidade. Finalmente, o controle retorna para a secção Processamento Main, onde o WScript objeto de Sair() método
é usado para terminar a execução do script. Figura 9.3 mostra como a unidade de rede mapeada aparece
na caixa de diálogo Meu computador.
VBScript e WSH Capítulo 9 211

FIGURA 9.3 Mapeamento de uma unidade de rede usando o WshNetwork objeto de MapNetworkDrive ()
método

Passando argumentos para Scripts


Em todos os scripts que você já viu até agora, os dados foram seja codificado para os scripts como constantes,

variáveis ​e matrizes ou recolhidos de forma interativa do usuário através de caixas de diálogo pop-up. Scripts também

frequentemente receber dados para processar por ter que os dados passados ​para eles como argumentos em tempo

de execução. Por exemplo, você pode configurar um script para chamar outro script e usar a saída produzida pelo

primeiro script como entrada para o segundo script.

Alternativamente, você pode passar argumentos para um script a partir da linha de comando do Windows.
Por exemplo, o seguinte comando deve executar um nome de script testscript.vbs e passá-lo três
argumentos:

WScript testscript.vbs doc log txt

O que acontece a seguir depende do script. Por exemplo, um script receber log, txt, e doutor como entrada pode usar

esses argumentos para construir uma lista de arquivos que devem ser processados ​de alguma maneira.
212 parte I Apresentando o Microsoft VBSCRIPT

NOTA

Você também pode passar argumentos para scripts que incluem um espaço em branco, mas para fazer isso, você deve
incluir o argumento dentro de um par de correspondentes aspas, como demonstrado abaixo.

CScript testscript.vbs relata, “arquivos de log”, documentos

Scripts têm de ser concebido para processar qualquer entrada argumento de que pode ser passado para eles.
Isto pode ser conseguido utilizando as propriedades pertencentes ao WshArguments objeto, como demonstrado
no exemplo seguinte.

'************************************************* ************************ 'Script Nome: 9.3.vbs script' Autor: Jerry

Ford 'Criado: 02/12/03

'Descrição: Este script demonstra como processar argumentos passados ​para' um VBScript

'************************************************* ************************

'Seção de inicialização

Option Explicit

WshArgs dim

Definir WshArgs = WScript.Arguments

'Secção de Processamento Principal

Se WshArgs.Count <1 Então

MsgBox “Erro:. Não há argumentos foram passados ​para este script” WScript.Quit ()

Else

ProcessArguments () End

If
VBScript e WSH Capítulo 9 213

WScript.Quit ()

'Secção Procedimento

ProcessArguments sub ()

Dim i, strDisplayString

strDisplayString = “Número total de argumentos passado para este“& _

script: “& vbTab & WshArgs.Count & vbCrLf & vbCrLf

Para i = 0 a (WshArgs.Count - 1)

strDisplayString = strDisplayString & WshArgs.Item (i) & vbCrLf Seguinte

MsgBox strDisplayString

End Sub

A primeira coisa que este VBScript faz é definir uma variável e usá-lo para criar uma instância do WshArguments
objeto, como mostrado abaixo.

WshArgs dim

Definir WshArgs = WScript.Arguments

Na Seção de Processamento Principal do script, o script, em seguida, utiliza o WshArguments

objeto de Contagem propriedade para garantir que pelo menos um argumento foi passado para o script, caso o

que ProcessArguments () função é chamada. Caso contrário, uma mensagem de erro é exibida eo WScript objeto

de Sair() método é executado, terminando a execução do script. o ProcessArguments () função começa pela

adição de um cabeçalho para uma seqüência de exibição, como mostrado abaixo.

strDisplayString = “Número total de argumentos passado para este script:“& _

vbTab & WshArgs.Count & vbCrLf & vbCrLf

Em seguida, ele usa um A seguir loop para percorrer a lista de argumentos passados ​para o script. o WshArguments
objeto armazena argumentos em uma lista indexada começando no zero. O circuito começa em zero
e gira até WshArgs.Count - 1
214 parte I Apresentando o Microsoft VBSCRIPT

(Por exemplo, se cinco argumentos são passados, o índice começarão na posição 0 e termina na posição 4).
O conteúdo do string de exibição são modificados em cada iteração do circuito adicionando o valor de cada
um argumento para a cadeia com base no seu número de índice, como especificado pela variável Eu ( por
exemplo, WshArgs.Item (i)).

Figura 9.4 demonstra a saída produzida por esse script se for aprovada uma lista de
argumentos de SalesReport.doc, MarketReport.doc, Forecast.xls, MonthlyStats.xls, e LogReports.log.

Figura 9.4 argumentos de processamento passados ​para um VBScript em tempo de execução

Usando XML para criar o Windows Script Arquivos

O WSH fornece programadores com um ambiente de script robusta que inclui o acesso a um conjunto
comum de objetos. Estes objetos fornecem acesso aos recursos do Windows que representam por meio
das propriedades e métodos. Um dos pontos fortes do WSH é que ele oferece o mesmo nível de
acesso, independentemente da linguagem de script a ser utilizado pelo programador. navios Microsoft o
WSH com VBScript e JScript, mas de terceiros linguagens de script WSHcompatible foram
disponibilizados que incluem Perl, o Python, e Rexx. faz o WSH não param por aí. Além de permitir que
você use a linguagem de script de sua escolha, que lhe fornece a capacidade de combinar dois ou mais
scripts, incluindo scripts escritos usando linguagens diferentes, em um único script conhecido como Arquivo
de Script do Windows. Windows Script Os arquivos são arquivos de texto simples que são salvos com
uma extensão de arquivo .wsf.

O WSH usa um subconjunto de XML para criar o Windows Script Files. XML é uma linguagem de marcação
que é sintaticamente semelhante ao HTML. tags XML são usados ​em
VBScript e WSH Capítulo 9 215

Windows Script arquivos para identificar ou marcar os componentes que compõem o arquivo. Por exemplo,
todos os scripts contidos em um arquivo script do Windows é fechado dentro de um par de < script> </ script> Tag.
O WSH atualmente fornece suporte para a versão XML 1.0.

XML é uma linguagem de marcação maiúsculas de minúsculas. Ele tem um rigoroso conjunto de regras que devem ser

seguidas quando a formatação tags. Ao contrário das linguagens de marcação HTML, você não pode sair com excluindo

marcas de fechamento necessários. O restante deste capítulo é dedicado para demonstrar um número de etiquetas XML

comumente utilizados, tal como delineado na Tabela 9.5.

Tabela 9.5 XML Tag comumente usado em Windows Script Arquivos Tag

Descrição

<? XML?> Esta tag especifica nível XML o arquivo do Windows Script.

<? Trabalho?> Esta tag é usada para ativar ou desativar manipulação de erro e depuração para um

trabalho especificado.

<Comment> </ comment> Esta tag fornece a capacidade para incorporar observações no prazo de Windows

Script Files.

<Script> </ script> Esta tag identifica o início eo fim de um script dentro de um arquivo de
script do Windows.

<Job> </ job> Esta tag identifica o início eo fim de um trabalho dentro de um arquivo de

script do Windows.

<Package> </ package> Esta tag permite que vários trabalhos a serem definidos dentro de um único arquivo de

script do Windows.

<Resource> </ resource> Esta tag define dados estáticos (constantes) que podem ser refe-
ciada por um script dentro de um arquivo de script do Windows.

GORJETA

XML versão 1.0 permite a utilização de ambos ortografia maiúsculas e minúsculas em tags. No entanto, o uso de
letras maiúsculas ortografia é geralmente considerado má forma. Você deve, portanto, utilizar toda a soletração
minúsculas. Isso também irá poupar-lhe um monte de trabalho recodificação no caso de uma futura versão do XML
incorpora um requisito all-minúsculas.
216 parte I Apresentando o Microsoft VBSCRIPT

O <? XML?> Tag


O <? XML?> tag é uma tag opcional que especifica a versão do XML que um arquivo do Windows Script
exige, a fim de executar. Se utilizado, o <? XML?> tag deve ser a primeira instrução no arquivo de script do
Windows. Sua sintaxe é mostrada abaixo.

<? Xml version =” XX ”Autónomo =” d tdflag ”?>

versão especifica a versão XML necessárias. Desde a escrita deste livro, a versão atual do XML é a versão

1.0. estar sozinho especifica um valor booleano que indica se ou não o script inclui uma referência a um DTD

externo ( Document Type Definition). O DTD é atualmente uma característica WSH não suportado. No

entanto, se desejar, você pode incluir isso. Se você optar por fazê-lo, então você deve especificar seu valor

como Sim. O <? XML?> tag não tem uma marca de fechamento. O objetivo do <? XML?> tag é permitir que o

programador para impor uma interpretação mais rigorosa das declarações XML dentro do Windows Script

Files. Por exemplo, este tag estritamente impõe maiúsculas e minúsculas. Além disso, exige que todos os

valores de atributos para ser colocado entre aspas simples ou duplas. O exemplo a seguir demonstra o uso

do <? XML?> tag dentro de um arquivo de script do Windows.

<? Xml version =”1.0” standalone =” sim”?>

<Job>

<Script language =”VBScript”>

MsgBox “Tratamento de erros e depuração estão agora habilitado.” </ Script> </

job>

O <? Trabalho?> Tag


O <? trabalho?> tag é uma tag opcional que permite ativar ou desativar o relatório de erros e depuração. O
<? trabalho?> tag não tem uma marca de fechamento. Sua sintaxe é mostrada abaixo.

<? Erro de trabalho =” errorflag ”Debug =” debugflag ”?>

errorflag é um valor booleano. Quando definido igual a Verdade, relatório de erros está habilitado. Se omitido, o

Windows Script arquivos automaticamente desativar o relatório de erros.

debugflag também é um valor booleano que controla se ou não a ocorrência de um erro irá iniciar o
depurador de scripts do Windows.
VBScript e WSH Capítulo 9 217

NOTA

O Microsoft Windows Script Debugger é um utilitário fornecido pela Microsoft que ajuda os programadores na
depuração de erros de script. Visita http://msdn.microsoft.com/scripting
para saber mais sobre este utilitário.

O exemplo a seguir demonstra como permitir que tanto o relatório de erros e depuração de script dentro de um
arquivo de script do Windows.

<Job>

<? Erro de trabalho =”true” debug =”true”?>

<Script language =”VBScript”>

MsgBox “Tratamento de erros e depuração estão agora habilitado.” </ Script> </

job>

O <comment> e </ comment> Etiquetas


o < comment> e </ comment> etiquetas de fornecer a capacidade de colocar comentários dentro do Windows
Script Files. o < comment> e </ comment> tags também pode ser usado para espalhar comentários fora em
várias linhas. A sintaxe para o < comment>
e </ comment> etiquetas é mostrado abaixo.

<Comment> texto de comentário </ comment>

O exemplo a seguir demonstra o uso do < comment> e </ comment> Tag.

<Job>

<Comment> Coloque o seu comentário aqui </ comment>

<Script language =”VBScript”>

MsgBox “Tratamento de erros e depuração estão agora habilitado.” </ Script> </

job>

O <script> e </ script>


Windows Script Arquivos conter um ou mais arquivos de script escritos em várias linguagens de script
WSHsupported. O <script> e </ script> tags são usadas para identificar
218 parte I Apresentando o Microsoft VBSCRIPT

o início eo fim de roteiros individuais dentro de um arquivo de script do Windows. A sua sintaxe é
mostrado abaixo.

<Script language =” scriptLanguage ”[Src =” externalscript “]>

... </

script>

língua é usado para especificar a linguagem de script utilizada para desenvolver o roteiro. src

é opcional e pode ser usado para especificar a localização de um script externo. O exemplo a

seguir demonstra o uso do < script> e </ script>


tags para incorporar um VBScript dentro de um arquivo de script do Windows.

<Job>

<Script language =”VBScript”>

MsgBox “Windows Script Host - número Script 2 de execução”

</ Script>

</ Job>

O próximo exemplo demonstra como configurar uma referência a um VBScript externo que está localizado na
mesma pasta que o arquivo de script do Windows.

<Job>

<Script language =”VBScript” src =”ScriptName.vbs” />

</ Job>

Os <job> e </ job> Etiquetas


Windows Script Os arquivos podem conter um ou mais postos de trabalho, cada um dos quais pode conter qualquer

número de scripts. Cada trabalho é identificado usando o < job> e </ job> Tag. No mínimo, todos os Arquivos de Script

Windows deve conter pelo menos uma sintaxe job.The para essas marcas é mostrado abaixo.

<Job [id = jobid]>

. . .

</ Job>

identidade é usado para identificar exclusivamente postos de trabalho em um arquivo de script do Windows que contém

mais de um emprego. Este parâmetro pode ser omitido no Windows Script arquivos que consistem em apenas um

trabalho. Ao atribuir IDs de trabalho para cada trabalho dentro de um arquivo de script do Windows, você fornece a

capacidade de especificar qual trabalho que você deseja executar quando você executar o arquivo de script do Windows.

O exemplo a seguir mostra um Arquivo de Script do Windows que é composta de um único trabalho.
VBScript e WSH Capítulo 9 219

<Job>

<Script language =”VBScript”>

MsgBox “O primeiro VBScript está agora em execução.” </ Script>

<Script language =”VBScript” src =”SecondVBScript.vbs” />

<Script language =”JScript”>

WScript.Echo ( “A primeira JScript está agora em execução.”); </ Script>

</ Job>

Como você pode ver, esta tarefa executa três scripts, dois escritos em VBScript e um escritos usando
JScript. A segunda VBScript definido dentro do trabalho representa um script externo.

O <package> e </ package> Etiquetas


A fim de colocar mais de um emprego dentro de um arquivo de script do Windows, você deve primeiro especificar
< pacote> e </ pacote> tags e, em seguida, incorporar os trabalhos dentro dessas tags. A sintaxe para o < pacote> e
</ pacote> etiquetas é mostrado abaixo.

<Package>

. . .

</ Package>

O exemplo a seguir demonstra como usar o < pacote> e </ idade pacote> tags para adicionar três empregos
para um arquivo script do Windows.

<Package>

<Id trabalho =”Job_A”>

<Script language =”VBScript”>

MsgBox “Job_A está agora em execução.” </

Script> </ job>

<Id trabalho =”Job_B”>


220 parte I Apresentando o Microsoft VBSCRIPT

<Script language =”VBScript”>

MsgBox “Job_B está agora em execução.” </

Script> </ job>

<Id trabalho =”Job_C”>

<Script language =”JScript”>

WScript.Echo ( “Job_C está agora em execução.”); </ Script>

</ job>

</ Package>

O primeiro trabalho é nomeado Job_A. Ele contém um único segundo VBScript.The e empregos terceiros são nomeados Job_B

e Job_C, respectivamente.

O <recurso> e </ recurso> Etiquetas


O XML < recurso> e </ recurso> tags permitem-lhe definir constantes que podem ser acessados ​por qualquer
script definido dentro do mesmo trabalho em um arquivo de script do Windows. Usando essas tags, você
pode definir uma ou mais constantes que os scripts individuais dentro do Windows Script arquivos podem
precisar usar. Isso poupa o trabalho de ter de redefinir constantes de uma e outra vez para cada script no
arquivo de script do Windows. Isso também ajuda a tornar seus scripts mais fácil de suportar. Ele permite
que você armazenar e gerenciar constantes, limitando o número de locais onde as constantes são definidas
(por exemplo, uma vez por tarefa). Quando especificado, o < recurso> e </ recurso> tags devem ser colocadas
dentro do < job> e </ job> Tag. A sintaxe para essas marcas é mostrado abaixo.

<Id recurso =” resourceID “>

. . .

</ Resource>

identidade é usado para especificar o nome de uma constante. O valor atribuído ao constante está especificado

digitando-o entre as etiquetas de abertura e de fecho, como mostrado no exemplo a seguir.

<Job>

<Resource id =”cTitleBarMsg”> Windows Script arquivo de demonstração </ resource>


VBScript e WSH Capítulo 9 221

<Script language =”VBScript”>

MsgBox “Script Execution começando.”, GetResource ( “cTitleBarMsg”) </ script>

</ Job>

Neste exemplo, o valor da constante cTitleBarMsg é exibido por um MsgBox () função usando o
WSH getResource () método. Este método WSH built-in é projetado para recuperar o valor de
constantes definidas dentro < recurso>
e </ recurso> Tag.

Executando o seu Windows Script Arquivos


Você pode executar qualquer arquivo de script do Windows, clicando duas vezes em seu ícone. Se o arquivo de script do

Windows contém um trabalho, esse trabalho e todos os scripts que ele é feito de se executar. No entanto, se o arquivo de

script do Windows consiste em mais de um emprego, o primeiro trabalho que é definido será executado. A fim de executar

outros trabalhos que residem dentro do arquivo script do Windows, você deve executar o arquivo de script do Windows a

partir do prompt de comando do Windows e dizer-lhe que trabalho que você deseja executar, especificando o ID do

trabalho.

Por exemplo, a seguinte declaração poderia ser usado para executar o primeiro emprego definido em um arquivo de script

do Windows chamado SampleScript.wsh usando o WScript hospedeiro execução.

WScript SampleScript.wsf

Desde o primeiro trabalho definido no script será executado, não há necessidade de especificar o seu ID trabalho

atribuído. Se o arquivo de script do Windows continha um segundo emprego que foi atribuído um ID de trabalho Job_B, então

você pode executá-lo usando o seguinte comando:

WScript SampleScript.wsf // trabalho: Job_B

resumo
Neste capítulo, você aprendeu sobre os objetos que compõem o modelo de objeto WSH. Além disso, você
foram apresentados com uma lista completa das propriedades
222 parte I Apresentando o Microsoft VBSCRIPT

e métodos associados com esses objetos e exemplos que demonstram como incorporar o uso de objetos WSH
em seus VBScripts. Você também aprendeu a criar e executar scripts que podem aceitar e argumentos de
processos passados ​em tempo de execução. Finalmente, você aprendeu a desenvolver o Windows Script
arquivos usando XML. Isto incluiu uma revisão das tags XML comumente usados.

You might also like