WScript osztály használata

Az előzőekben láttuk, hogy a Windows Shellt hogyan lehet szkriptből megszólítani. Van egy másik COM objektum, a WScript, amelynek Shell alosztálya is hasonló célokat, de még mélyebb szinten valósít meg. Például szeretnénk egy olyan alkalmazással kommunikálni, amely nem COM alkalmazás, például a Notepaddal. Jobb híján billentyűzetleütéseket tudunk neki küldeni a WScript.Shell osztály SendKeys metódusával:

[1] PS C:\> $sh = new-object -com wscript.shell

[2] PS C:\> $sh.Run("notepad")

0

[3] PS C:\> $sh.AppActivate("notepad")

True

[4] PS C:\> $sh.AppActivate("notepad"); $sh.SendKeys("kakukk!")

True

Az [1]-es sorban elindítom a Notepad-et a Run metódussal. Aztán előtérbe helyezem az ablakát, hogy ő kapja a billentyűleütéseket, majd kiküldőm a billentyűzetütéseket. Az alábbi képernyőfotón látszik, hogy a kiadott karakterek tényleg beíródtak a Notepad szerkesztőfelületére.

141 . ábra Nem COM alkalmazás vezérlése WScrip.Shell objektummal

Bonyolultabb billentyűkombinációkat is küldhetünk (részletek: http://msdn.microsoft.com/en-us/library/8c6yea83(VS.85).aspx ), például egy „mentés másként” művelet:

$sh.AppActivate("notepad")

$sh.SendKeys("%(F)A")       # Alt+F és A a ’Send As’ párbeszédablak előhívásához

start-sleep 1                     # hagyjunk időt a megnyíláshoz

$sh.SendKeys("abcdefghijk.txt")   # fájlnév kiküldése

start-sleep 1                     # kis várakozás

$sh.SendKeys("~")                 # Enter kiküldése

Nézzük ennek az objektumnak a tagjellemzőit:

[5] PS C:\> $sh | gm

 

 

   TypeName: System.__ComObject#{41904400-be18-11d3-a28b-00104bd35090}

 

Name                     MemberType            Definition

----                     ----------            ----------

AppActivate              Method                bool AppActivate (Variant...

CreateShortcut           Method                IDispatch CreateShortcut ...

Exec                     Method                IWshExec Exec (string)

ExpandEnvironmentStrings Method                string ExpandEnvironmentS...

LogEvent                 Method                bool LogEvent (Variant, s...

Popup                    Method                int Popup (string, Varian...

RegDelete                Method                void RegDelete (string)

RegRead                  Method                Variant RegRead (string)

RegWrite                 Method                void RegWrite (string, Va...

Run                      Method                int Run (string, Variant,...

SendKeys                 Method                void SendKeys (string, Va...

Environment              ParameterizedProperty IWshEnvironment Environme...

CurrentDirectory         Property              string CurrentDirectory (...

SpecialFolders           Property              IWshCollection SpecialFol...

Látható, hogy a billentyűleütések mellet többek között registry-szerkesztő, shortcut-létrehozó és dialógusablak-kirakó metódusai is vannak.

A WScriptnek nem csak Shell alosztálya van, hanem Network is. Ezzel számtalan hasznos, hálózattal kapcsolatos műveletet tudunk végrehajtani:

[10] PS I:\>$ws = New-Object -com WScript.Network

[11] PS I:\>$ws | gm

 

 

   TypeName: System.__ComObject#{24be5a31-edfe-11d2-b933-00104b365c9f}

 

Name                        MemberType Definition

----                        ---------- ----------

AddPrinterConnection        Method     void AddPrinterConnection (string...

AddWindowsPrinterConnection Method     void AddWindowsPrinterConnection ...

EnumNetworkDrives           Method     IWshCollection EnumNetworkDrives ()

EnumPrinterConnections      Method     IWshCollection EnumPrinterConnect...

MapNetworkDrive             Method     void MapNetworkDrive (string, str...

RemoveNetworkDrive          Method     void RemoveNetworkDrive (string, ...

RemovePrinterConnection     Method     void RemovePrinterConnection (str...

SetDefaultPrinter           Method     void SetDefaultPrinter (string)

ComputerName                Property   string ComputerName () {get}

Organization                Property   string Organization () {get}

Site                        Property   string Site () {get}

UserDomain                  Property   string UserDomain () {get}

UserName                    Property   string UserName () {get}

UserProfile                 Property   string UserProfile () {get}

Nézzünk például egy hálózati meghajtók felsorolását:

[12] PS C:\> $ws = New-Object -com WScript.Network

[13] PS C:\> $ws.EnumNetworkDrives()

I:

\\K-FILE1\soostibor$



Word To HTML Converter