Skip to content

2. Konteksty uruchamiania pliku VBSCRIPT

2.1. Introduction

Program vbscript nie uruchamia się bezpośrednio w systemie Windows, lecz w kontenerze, który zapewnia mu środowisko uruchomieniowe oraz pewną liczbę obiektów właściwych dla tego programu. Ponadto program VBScript może korzystać z obiektów udostępnianych przez system Windows, zwanych obiektami ActiveX.

W niniejszym dokumencie będziemy korzystać z dwóch kontenerów: Windows Scripting Host, potocznie nazywanego WSH, oraz przeglądarki Internet Explorer, nazywanej czasami w dalszej części tekstu IE. Istnieje wiele innych kontenerów. Na przykład aplikacje pakietu MS-Office są kontenerami dla pochodnej obiektu VB o nazwie VBA (Visual Basic for Applications). Istnieje ponadto wiele aplikacji systemu Windows, które pozwalają użytkownikom na przekraczanie ograniczeń tego środowiska, umożliwiając im tworzenie programów uruchamianych w ramach aplikacji i korzystających z obiektów właściwych dla tej aplikacji.

Kontener, w którym uruchamia się program VBScript, odgrywa kluczową rolę:

  • Obiekty udostępniane programowi VBScript przez kontener różnią się w zależności od kontenera. Na przykład WSH udostępnia programowi VBS obiekt o nazwie WScript, który zapewnia dostęp m.in. do udziałów sieciowych i drukarek sieciowych na komputerze hosta. Z kolei obiekt IE udostępnia programowi VBS obiekt o nazwie document, który reprezentuje całość wyświetlanego dokumentu HTML. Program VBS będzie wtedy mógł operować na tym dokumencie. Z kolei program Excel udostępnia programowi obiekty o nazwie VBA, reprezentujące skoroszyty, arkusze w skoroszytach, wykresy itp. – w zasadzie wszystkie obiekty obsługiwane przez program Excel.
  • Chociaż obiekty w danym kontenerze zapewniają programowi VBScript pełną moc, to czasami mogą ograniczać niektóre jego możliwości. Na przykład program VBScript uruchomiony w przeglądarce o identyfikatorze IE nie ma dostępu do dysku komputera hosta ze względów bezpieczeństwa.

Dlatego też, mówiąc o programowaniu w VBScript, należy wskazać, w którym kontenerze program jest uruchamiany.

W systemie Windows VBScript nie jest jedynym językiem, którego można używać w kontenerach WSH lub IE. Można na przykład użyć JScript (=JavaScript), PerlScript (=Perl), Python itp. Wiele z tych języków wydaje się na pierwszy rzut oka lepszych od VBScriptu. Ten ostatni ma jednak poważne zalety:

  • VB oraz jego odmiany VBSCRIPT i VBA są bardzo rozpowszechnione na komputerach z systemem Windows. Znajomość tego języka wydaje się niezbędna.
  • To raczej obiekty, z których może korzystać program, a nie sam język, decydują o jego mocy. Wiele z tych obiektów jest jednak dostarczanych przez środowiska uruchomieniowe, a nie przez same języki.

Wadą języka VBSCRIPT jest to, że nie jest on przenośny na systemy inne niż Windows, na przykład Unix. Jego konkurenci – JavaScript, Perl i Python – są natomiast przenośni. Jeśli musimy pracować na systemach heterogenicznych, korzystanie z tego samego języka na różnych systemach może być interesujące, a nawet niezbędne.

2.2. Kontener WSH

Kontener WSH (Windows Scripting Host) umożliwia uruchamianie w systemie Windows programów napisanych w różnych językach: vbscript, javascript, perlscript, python itp. Istnieje standard, którego należy przestrzegać, aby dany język mógł być używany w ramach WSH. Każdy język spełniający ten standard może być uruchamiany w ramach WSH. Można sobie wyobrazić, że powyższa lista języków uruchamianych w WSH może się wydłużyć. Kontener udostępnia uruchamianym programom obiekty, które zapewniają im prawdziwą moc. Zmniejsza to różnice między językami, ponieważ wszystkie korzystają wówczas z tego samego zestawu obiektów. Wybór jednego języka zamiast innego może stać się wówczas kwestią gustu, a nie wydajności.

Uruchomienie programu w WSH odbywa się za pomocą dwóch plików wykonywalnych: wscript.exe i cscript.exe. Plik wscript.exe znajduje się zazwyczaj w katalogu instalacyjnym systemu Windows, zwanym zazwyczaj %windir%:


C:\ >echo %windir%
C:\WINDOWS

C:\>dir c:\windows\wscript.exe
WSCRIPT  EXE       123 280  19/09/01  11:54 wscript.exe

L'exécutable cscript.exe se trouve lui sous %windir%\command :

C:\>dir c:\windows\cscript.* /s

Répertoire de C:\WINDOWS\COMMAND
CSCRIPT  EXE       102 450  26/06/01  17:49 cscript.exe

Litera „w” w nazwie wscript oznacza windows, a litera „c” w nazwie cscript oznacza console. Skrypt można uruchomić zarówno za pomocą wscript, jak i cscript. Różnica polega na sposobie wyświetlania komunikatów na ekranie:

  • wscript wyświetla je w oknie,
  • cscript wyświetla je bezpośrednio na ekranie

Oto skrypt coucou.vbs, który wyświetla na ekranie coucou:

Image

Otwórzmy okno DOS i uruchommy go kolejno z wscript oraz cscript:

DOS>wscript coucou.vbs

Image

DOS>cscript coucou.vbs

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

coucou

Powyżej wyraźnie widać różnicę między tymi dwoma trybami. W niniejszym dokumencie będziemy korzystać niemal wyłącznie z trybu konsolowego cscript. Jest to tryb odpowiedni dla aplikacji tzw. „batchowych”, czyli aplikacji bez interakcji z użytkownikiem za pomocą klawiatury. W powyższych wynikach należy zwrócić uwagę na dwie kwestie:

  1. Założono, że pliki wykonywalne wscript.exe i cscript.exe znajdowały się w katalogu „PATH” na komputerze, co pozwala na ich uruchomienie poprzez wpisanie po prostu ich nazw. Gdyby tak nie było, należałoby wpisać tutaj:
DOS>c:\windows\wscript coucou.vbs
DOS>c:\windows\command\cscript coucou.vbs
  1. Należy zauważyć, że wersja programu wsh używana w tym przykładzie oraz w dalszej części dokumentu to wersja 5.6.
  1. Plik źródłowy skryptu ma rozszerzenie .vbs. Jest to rozszerzenie oznaczające skrypt vbscript, natomiast skrypt javascript jest oznaczony rozszerzeniem .js.

Program cscript posiada różne opcje uruchamiania, które można uzyskać, uruchamiając program cscript bez argumentów:

DOS>cscript

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Utilisation : CScript scriptname.extension [option...] [arguments...]

Options:
//B          tryb wsadowy: Wyłącza wyświetlanie monitów i błędów skryptów
//D          Włącz debugowanie
//E:engine   Użyj silnika do wykonywania skryptów
//H:CScript Zastępuje domyślne środowisko wykonywania skryptów na CScript.exe
//H:WScript tRemplace domyślne środowisko wykonywania skryptów na WScript.exe (domyślnie)
//I          Tryb interaktywny (domyślny, przeciwieństwo  opcji //B)
//Zadanie:xx   xx Uruchom zadanie WSF
//Logo       Wyświetl logo (domyślnie)
//Nologo     Zablokuj wyświetlanie logo: podczas wykonywania zadania nie jest wyświetlany żaden baner
//S          Zapisz bieżące opcje wiersza poleceń dla tego użytkownika
//T:nn       Czas wykonywania w sekundac h: Maksymalny dozwolony czas wykonania skryptu
//X          Uruchom skrypt w debuggerze

Argument //nologo wyłącza wyświetlanie banera programu wsh:

C:\>cscript //nologo coucou.vbs
coucou

2.3. Skład skryptu WSH

Właśnie zapoznaliśmy się z pierwszym skryptem: coucou.vbs

Image

Wskazaliśmy, że rozszerzenie pliku .vbs odnosi się do skryptu vbscript. Nie jest to jednak obowiązkowe. Moglibyśmy umieścić skrypt w pliku o rozszerzeniu .wsf w następującej, bardziej złożonej formie:

Image

Wykonanie tego skryptu daje następujący wynik:

C:\>cscript //nologo coucou2.wsf
coucou

Skrypt WSH może łączyć różne języki:

Image

Wykonanie tego skryptu daje następujący wynik:

1
2
3
4
C:\>cscript //nologo coucou3.wsf
coucou (vbscript)
coucou (javascript)
coucou (perlscript)

Zwróćmy uwagę na następujące kwestie:

  1. Kontener WSH nie jest powiązany z żadnym językiem. Skrypt wsh może łączyć różne języki w pliku z rozszerzeniem .wsf
  2. Skrypt jest wówczas ujęty w tagi <job id="..."> ... </job>
  3. Wewnątrz aplikacji (=job) języki używane w poszczególnych fragmentach kodu są oznaczone tagami <script language="...."> .... </script>
  4. Ten język znaczników nosi nazwę: XML, co oznacza eXtended Markup Language. XML nie definiuje żadnych znaczników, lecz zasady rozmieszczenia znaczników. W tym przypadku należałoby zatem stwierdzić, że język znaczników używany w skrypcie wsh jest zgodny ze standardem XML.

W dalszej części będziemy używać wyłącznie języka VBScript w plikach .vbs.

2.4. Obiekt WSCRIPT

Kontener WSH udostępnia skryptom, które wykonuje, obiekt o nazwie wscript. Obiekt posiada właściwości i metody:

Obiekt Obj posiada właściwości Pi, które określają jego stan. Tak więc obiekt thermomètre może posiadać właściwość température. Ta właściwość jest jednym z aspektów stanu termometru. Innym aspektem może być maksymalna temperatura Tmax, jaką termometr jest w stanie wytrzymać.

Obiekt Obj może posiadać metody Mj, które umożliwiają podmiotom zewnętrznym:

  • uzyskać informacje o jego stanie
  • zmienić jego stan

Tak więc nasz termometr, jeśli jest elektroniczny, mógłby posiadać metodę allumer, która go włączałaby, inną metodę éteindre, która go wyłączałaby, oraz jeszcze inną metodę afficher, która wyświetlałaby temperaturę równowagi po jej osiągnięciu. W terminologii programistycznej metoda to funkcja, która może przyjmować argumenty i zwracać wyniki.

W języku VBScript właściwości Pi obiektu Obj są oznaczane jako Obj.Pi, a metody Mj jako Obj.Mj. Obiekt wscript o nazwie WSH jest ważnym obiektem ze względu na metody, które udostępnia skryptom. Na przykład jego metoda echo pozwala wyświetlić komunikat. Składnia tej metody jest następująca:

wscript.echo arg1, arg2, ..., argn

Wartości argumentów argi są następnie wyświetlane w oknie (w przypadku wykonania przez wscript) lub na ekranie (w przypadku wykonania przez cscript w ramach DOS).

2.5. Internet Explorer jako kontener

Wspomnieliśmy wcześniej, że przeglądarka Internet Explorer może pełnić rolę kontenera dla skryptu VBScript. Zilustrujmy to na prostym przykładzie. Poniżej znajduje się strona HTML (HyperText Markup Language) o nazwie coucou2.htm, która nie zawiera skryptu VBScript.

21

Image

Jej bezpośrednie załadowanie w przeglądarce Internet Explorer (Fichier/Ouvrir) daje następujące wyniki:

Zawartość pliku coucou2.htm pokazuje nam, że HTML jest językiem znaczników. Znajomość języka HTML oznacza znajomość tych znaczników. Ich głównym celem jest wskazanie przeglądarce, w jaki sposób wyświetlić dokument. HTML nie jest całkowicie zgodny ze standardem XML, ale jest do niego zbliżony.

W coucou2.htm znajdują się dwie informacje oznaczone numerami 1 i 2. Odzwierciedliliśmy je również w wygenerowanym wyświetlaczu. To właśnie tag <title>...</title> spowodował, że informacja 1 została umieszczona w pasku tytułu przeglądarki, a tag <body>..</body> spowodował, że informacja 2 została umieszczona w części dokumentowej przeglądarki.

Nie będziemy zagłębiać się dalej w analizę języka HTML. Zmodyfikujmy plik coucou2.htm, wprowadzając do niego skrypt VBScript, i nazwijmy go teraz coucou1.htm:

Image

Skrypt VBScript został umieszczony w tagu <head>...</head>. Mógłby zostać umieszczony gdzie indziej. Wyświetla on „coucou” przy pierwszym załadowaniu strony. W tym przypadku przeglądarką musi być Internet Explorer, ponieważ tylko ta przeglądarka domyślnie obsługuje skrypty VBScript. Uzyskany wynik wygląda następująco:

Image

a następnie normalny wygląd strony:

Image

Wykonano następujący skrypt:

Image

Podczas gdy kontener WSH udostępniał skryptowi obiekt o nazwie wscript, umożliwiający wyświetlanie treści za pomocą metody echo, tutaj IE udostępnia skryptowi obiekt window, umożliwiający wyświetlanie treści za pomocą metody alert. Aby więc wyświetlić „coucou”, wpisujemy wscript.echo „coucou” w WSH oraz window.alert „coucou” w IE. Można tu również pokazać, że w rzeczywistości w kontenerze IE można używać wielu języków. Powróćmy do przykładu przedstawionego już w pliku WSH w ramach strony coucou3.htm:

Image

Po załadowaniu tej strony przez IE wyświetlane są najpierw trzy okna informacyjne:

a następnie wyświetla stronę docelową:

Image

2.6. Pomoc programu WSH

WSH zawiera system pomocy, który zazwyczaj znajduje się w folderze „C:\Program Files\Microsoft Windows Script\ScriptDocs”. W przypadku wersji 5.6 programu WSH plik pomocy nosi nazwę „SCRIPT56.CHM”. Wystarczy dwukrotnie kliknąć ten plik, aby uzyskać dostęp do pomocy. Przydatne może być utworzenie skrótu do tego pliku na pulpicie.

Po uruchomieniu wyświetla się następujący ekran:

Image

Znajduje się tam pomoc dotycząca kontenera WSH, a także pomoc dotycząca języków VBScript i JavaScript. Jest to niezbędne narzędzie zarówno dla początkujących, jak i doświadczonych programistów. Istnieje kilka sposobów korzystania z tej pomocy:

  • nie wiadomo dokładnie, czego się szuka. Chcemy po prostu zapoznać się z dostępnymi opcjami. W takim przypadku można skorzystać z powyższej zakładki Sommaire. Można na przykład sprawdzić, co jest dostępne dla języka VBScript:

Image

W pomocy do VBscript znajdziesz wiele informacji, których nie ma w tym dokumencie.

  • Można wyszukać konkretną informację, na przykład sposób korzystania z funkcji msgbox w VBscript. W tym celu należy skorzystać z zakładki Rechercher:

Image

Pomoc wyświetla wszystkie hasła związane z wyszukiwanym słowem. Zazwyczaj pierwsze proponowane hasła są najbardziej trafne. Tak jest również w tym przypadku, gdzie pierwsze proponowane hasło jest właściwe. Wystarczy dwukrotnie kliknąć na nie, aby uzyskać informacje zawarte w tym haśle:

Image