Windows - Üzenetablakok használata VBScript-ekben

forráskód letöltése
Visual Basic szkriptekben a felhasználók felé irányuló információk megjelenítésének egyik legjobban használható módja az üzenetablakok alkalmazása. Sokan használják is őket, de csak kevesen tudják, hogy valójában mennyi lehetőség rejlik bennük. Cikkünkben igyekszünk komplett referenciával szolgálni használatukról, példákkal alátámasztva a leírtakat.
Mellékeltünk egy szkriptet "MessageBox.vbs" néven, futtatása után megjelenít egy ablakot a képernyőn három nyomógombbal, várakozik az egyik lenyomására, végül kiírja, hogy melyiket nyomtuk meg.
Szabványos Windows üzenetablakok nem csak a magas szintű programfejlesztői környezetet (Visual Studio .NET, Delphi) használók rendelkezésére állnak, hanem egyszerű VBScript-ekből is elérhetők. Ha nem csak annyit akarunk, hogy megjelenjen egy felirat a képernyőn, akkor mindenképpen érdemes megtanulni a használatukat. Egyetlen függvény meghívásával jeleníthető meg az összes változat, neve: MsgBox.
Nézzük meg a szintaktikáját:
MsgBox (szöveg, gombok, fejléc, helpfájl, context)
Az ablak tartalma
Hozzunk létre egy új fájlt "MessageBox.vbs" néven és írjuk bele az alábbi sort, majd futtassuk a Windows Intézőben (Windows Explorer).
MsgBox ("Hello")
Megjelenik egy ablak "VBScript" fejléccel, az általunk megadott "Hello" felirattal és egyetlen "OK" gombbal. Ha rákattintunk a gombra az ablak bezáródik.

Koncentráljuk a "Hello" feliratra, amit a szintaktikában "szöveg"-ként említettünk. Ez nem más, mint egy maximum 1024 karakterből álló sztring és az ablak szöveges tartalmát adja. Több soros szövegek is megjeleníthetők, ha beépítjük a Chr(13) és Chr(10) karaktereket (kocsi vissza és sorvége) a sztringbe:

MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH")
Gombok, ikonok
Következzenek a gombok, ha nem adunk meg egyet sem, akkor csak az "OK" jelenik meg.
Konstans Érték Leírás
vbOKOnly 0 "OK" gomb.
vbOKCancel 1 "OK" és "Mégsem" ("Cancel") gombok.
vbAbortRetryIgnore 2 "Leállítás" ("Abort"), "Ismét" ("Retry") és "Kihagyás" ("Ignore") gombok.
vbYesNoCancel 3 "Igen" ("Yes"), "Nem" ("No") és "Mégsem" ("Cancel") gombok.
vbYesNo 4 "Igen" ("Yes") és "Nem" ("No") gombok.
vbRetryCancel 5 "Ismét" ("Retry") és "Mégsem" ("Cancel") gombok.
vbCritical 16 Kritikus hiba ikon megjelenítése.
vbQuestion 32 Kérdőjel ikon megjelenítése.
vbExclamation 48 Felkiáltójel ikon megjelenítése.
vbInformation 64 Információs ikon megjelenítése.
vbDefaultButton1  0 Az első gomb az alapértelmezett.
vbDefaultButton2 256 A második gomb az alapértelmezett.
vbDefaultButton3 512 A harmadik gomb az alapértelmezett.
vbDefaultButton4 768 A negyedik gomb az alapértelmezett.
vbApplicationModal  0 Nem folytatódik a szkript futása, amíg a felhasználó be nem zárja az ablakot.
vbSystemModal 4096 Az ablak minden más alkalmazás ablaka felett lesz és addig nem folytatódik a szkript futása, amíg a felhasználó be nem zárja.
A fenti táblázatból látható, hogy a gombok mellett ikonok is megjeleníthetők, illetve dönthetünk arról, hogy az ablak legfelül legyen-e (4096). Minden Visual Basic konstanshoz tartozik egy szám, amit második paraméterként megadva lehet használni. Példákon keresztül sokkal szemléletesebb a működése.
Módosítsuk a szkriptet és jelenítsük meg a "Leállítás" ("Abort"), "Ismét" ("Retry") és "Kihagyás" ("Ignore") gombokat:

return=MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH",2)
A "return" visszatérési értékkel most ne foglalkozzunk, a későbbiekben majd visszatérünk rá.
Mi van, ha ugyanezeket a gombokat akarjuk látni egy kritikus hibát jelző ikonnal együtt? Adjuk össze a két konstanst: a gombok értéke 2, az ikoné 16, az összesen 18:

return=MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH",18)
Láthatjuk, hogy mindig balról jobbra haladva sorban az első gomb aktív az ablak megjelenése után. Tegyük aktívvá a másodikat és adjunk hozzá a 18-hoz 256-ot:
return=MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH",274)
Szemléletesebb, ha a 274-et az alábbi módszerrel adjuk meg, ugyanis jobban látszik, hogy miből tevődött össze:
return=MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH",1+16+256)
Visszatérési értékek kezelése
Térjünk át a visszatérési értékek kezelésére. Annak megfelelően, hogy a felhasználó melyik gombot nyomta meg, keletkezik egy úgynevezett visszatérési érték, ami az alábbi táblázatban lévő számokat jelenti.
Érték Gomb
1 "OK"
2 "Mégsem" ("Cancel")
3 "Leállítás" ("Abort")
4 "Ismét" ("Retry")
5 "Kihagyás" ("Ignore")
6 "Igen" ("Yes")
7 "Nem" ("No")
Ha a "return" értéke 3, akkor a felhasználó a "Leállítás" ("Abort") gombot nyomta le. Szkriptekben például így tudjuk lekezelni:
return=MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH",2+16+256)
if return = 3 then 
 Wscript.Echo "A 'Leállítás' ('Abort') gomb lett lenyomva."
End if
if return = 4 then 
 Wscript.Echo "Az 'Ismét' ('Retry') gomb lett lenyomva."
End if
if return = 5 then 
 Wscript.Echo "A 'Kihagyás' ('Ignore') gomb lett lenyomva."
End if
Fejléc
Egy kivételével már minden információ rendelkezésünkre áll az üzenetablak személyre szabásához, a kivétel a fejléc, ami eddig mindig a "VBScript" szöveget jelenítette meg. Az "MsgBox" függvény következő paramétereként megadott sztring jelenti az ablak fejlécét:
return=MsgBox("Hello" & Chr(13) & Chr(10) & "Itt a WSH",2+16+256, "Saját ablak")
Példánkban a nem túl találó "Saját ablak" szöveget helyeztük el az ablak fejlécében.
Help
Ha a felhasználó lenyomja az F1 funkcióbillentyűt - amíg aktív az ablak - megjeleníthető egy szabványos Windows Súgó (Help) fájl. A "Helpfájl" helyére írjuk be a fájl nevét elérési úttal együtt és a "Context" helyére a fájlon belüli link nevét, ahová a fókusz ugorjon.