HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Külső programok futtatása VBScript-ekből


Példaprogram letöltése

2618 bájt

A Windows 2000/XP/.NET szkriptek a programozói vénával rendelkező rendszergazdák kezében rendkívül hatékony adminisztrációs eszközt jelentenek, újságunkban számos alkalommal oldottunk meg használatukkal különböző feladatokat. Mostani cikkünket nem egy konkrét probléma megoldására szánjuk, hanem azt kívánjuk bemutatni, hogy lehet a szkriptekből más, külső programokat futtatni.

Az alábbi szkripteket mellékeltük cikkünkhöz:
"Exec.vbs" - Elindítja a számológépet és bezárása után kiírja a visszatérési értékét.
"Run.vbs" - Elindítja a jegyzettömböt és bezárása után kiírja a visszatérési értékét.
"AppActivate.vbs" - Előtérbe hozza (aktiválja) a számológépet.
Szkriptekből két metódus áll rendelkezésünkre, ha külső programot akarunk futtatni. Működésükben több eltérés van, ezért mindig az adott feladat megoldásába leginkább bele illőt célszerű választani. Közös bennük, hogy a Windows Scripting Host (WSH) "Shell" objektumához tartoznak.
Jogosultságok
A programok a szkriptet futtató (bejelentkezett) felhasználó hitelesítési adataival futnak. Például a rendszergazda indít egy szkriptet, amely futtatja az Active Directory telepítését végző DCPROMO varázslót, melyet az operációs rendszer úgy érzékel, mintha szintén a rendszergazda indította volna. Ugyanez egy felhasználónál már nem működik, mert nem rendelkezik elég joggal a címtár telepítéséhez vagy eltávolításához, hiába indította mindkét esetben ugyanaz a szkript, ugyanazt a varázslót.
Exec metódus
Kezdjük az egyszerűbbel:
Az Exec metódusnak egyetlen paraméterként az indítandó program nevét kell átadni, ha szükséges elérési úttal együtt. Visszatérési értéke a program futása alatt nulla, ha már nem fut, de rendben zajlott a leállítás, akkor egy, ha bármilyen hiba lépett fel, akkor a hiba kódja. Mindez az alábbi mintapéldán jól látható:
Hozzuk létre a "Shell" objektum egy saját példányát, ugyanolyan néven (választható más név is).
Set Shell = CreateObject("WScript.Shell")
Hívjuk meg az Exec metódust és paraméterként adjuk át a számológép indítóállományának nevét. Mivel benne van a Windows keresési újvonalban (Path környezeti változó), nem szükséges külön elérési utat megadni. Calc néven nincs több indítható állomány, ezért a kiterjesztést is elhagytuk.
Set objExec = Shell.Exec("calc")
Egy ciklussal másodpercenként ellenőrizzük, hogy fut-e még a számológép, ekkor a Status tulajdonság visszatérési értéke nulla.
Do While objExec.Status = 0
 WScript.Sleep 100
Loop
Ha már nem fut, jelenítsük meg a képernyőn a Status értékét.
WScript.Echo "Visszatérési érték: " & objExec.Status
Korlátozások:
Nem szabályozható, hogy az indított alkalmazás milyen ablakban jelenjen meg.
Csak Win32 alkalmazásokat indíthatunk, *.DOC vagy más fájlokat nem.
A korlátokat a következő metódus hivatott ledönteni.
Run metódus
A Run metódus már lényegesen több lehetőséggel van felruházva. Paraméterei között elsőként az indítandó alkalmazás nevét és elérési útját kell átadni (utóbbit csak ha szükséges), nem kötelezően meg lehet adni az ablak megjelenését szabályozó egész számot (integer). Ugyancsak nem kötelező, de sokszor hasznos a harmadik paraméter, mely azt szabályozza, hogy függesztődjön-e fel a szkript futtatása, amíg a külső alkalmazás fut vagy sem.
Nézzünk meg ismét egy példát:
Szkriptünk ugyanúgy indul, mint az előbb.
Set Shell = CreateObject("WScript.Shell")
Meghívjuk a Shell objektum Run metódusát és a visszatérési értéket a Return változóba helyezzük. Ezúttal a "Jegyzettömb" ("Notepad") programot indítjuk, az ablak teljes méretben jelenik meg (lásd lent) és addig nem folytatódik a szkript, amíg be nem zárjuk (True).
Return=Shell.Run ("notepad", 3, True)
Végül kiírjuk a visszatérési értéket.
WScript.Echo "Visszatérési érték: " & Return
Következő variációk léteznek a futtatandó program ablakának kirajzolására (magának az alkalmazásnak is lehetővé kell tenni):
0 = Nem jelenik meg ablak, a program a háttéralkalmazásokhoz hasonlóan fut. A notepad esetében nem a legjobb megoldás, de akkor hasznos, ha nem akarjuk, hogy a felhasználó lássa. A CTRL+ALT+DEL lenyomására megjelenő folyamatlistában látható és leállítható.
1 = Normál módon jelenik meg, ez az alapértelmezett érték, ha elhagyjuk a paramétert.
2 = Kis méretben indul.
3 = Teljes méretben indul.
4 = Normál módon jelenik meg, de nem lesz aktív.
5 = Normál módon jelenik meg és láthatók aktuális méretre és pozícióra vonatkozó információk (nem működik minden ablaknál).
6 = Kis méretben indul és a sorrendben következő ablak lesz aktív (ALT + TAB).
7 = Kis méretben indul és az aktuális ablak marad az aktív.
8 = Normál méretben indul és az aktuális ablak marad az aktív.
9 = Normál méretben indul, de ha kilépéskor teljes vagy kis méretben volt a következő indítás alkalmával visszaáll az utolsó állapot. Az alkalmazásnak is támogatnia kell.
Megjegyzések:
Visszatérési érték nulla, ha minden rendben zajlott és nem keletkezett hiba, ellenkező esetben a hiba kódját tartalmazza.
Ha a harmadik paraméter False, akkor a szkript futtatása az elindított programtól függetlenül folytatódik (aszinkron mód).
Fájlhozzárendelések esetén a hozzárendelt alkalmazás indul el. Például a *.DOC fájlok futtatásánál betöltődik a Word és betölti a megadott dokumentumot. Ekkor nem használható minden esetben a szinkron mód.
Egy járulékos elem: AppActivate metódus
Ha már fut az alkalmazás, többféle műveletet lehet végezni vele, némelyeknek feltétele, hogy a sok ablak közül mindig a megfelelő legyen aktív. E célból készült az AppActivate metódus. Egyetlen paramétereként az aktivizálandó program fejlécét kell átadni:
Set Shell = CreateObject("WScript.Shell")
Shell.AppActivate ("Számológép")
Figyelnünk kell a Windows különböző nyelvi verziói közötti eltérésekre, a fenti példa egy magyar Windows-on működik, míg az alábbi egy angolon:
Set Shell = CreateObject("WScript.Shell")
Shell.AppActivate ("Calculator")

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 579. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |