A Windows shell kezelése

Maga a Windows grafikus keretprogramja, shellje is COM objektum, azaz megszólítható, a publikus metódusai és tulajdonságai meghívhatók, lekérdezhetőek. Ehhez először meg kell hívni az shellt, ezt a PowerShellben nagyon egyszerűen, a new-object –com  commandlettel tehetjük meg:

[2] PS C:\> $sh = new-object -com Shell.Application

Miután ezt az objektumot még többször akarom használni, ezért egy $sh változóba tettem. Nézzük meg ennek tagjellemzőit:

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

 

 

   TypeName: System.__ComObject#{efd84b2d-4bcf-4298-be25-eb542a59fbda}

 

Name                 MemberType Definition

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

AddToRecent          Method     void AddToRecent (Variant, string)

BrowseForFolder      Method     Folder BrowseForFolder (int, string, int...

CanStartStopService  Method     Variant CanStartStopService (string)

CascadeWindows       Method     void CascadeWindows ()

ControlPanelItem     Method     void ControlPanelItem (string)

EjectPC              Method     void EjectPC ()

Explore              Method     void Explore (Variant)

ExplorerPolicy       Method     Variant ExplorerPolicy (string)

FileRun              Method     void FileRun ()

FindComputer         Method     void FindComputer ()

FindFiles            Method     void FindFiles ()

FindPrinter          Method     void FindPrinter (string, string, string)

GetSetting           Method     bool GetSetting (int)

GetSystemInformation Method     Variant GetSystemInformation (string)

Help                 Method     void Help ()

IsRestricted         Method     int IsRestricted (string, string)

IsServiceRunning     Method     Variant IsServiceRunning (string)

MinimizeAll          Method     void MinimizeAll ()

NameSpace            Method     Folder NameSpace (Variant)

Open                 Method     void Open (Variant)

RefreshMenu          Method     void RefreshMenu ()

ServiceStart         Method     Variant ServiceStart (string, Variant)

ServiceStop          Method     Variant ServiceStop (string, Variant)

SetTime              Method     void SetTime ()

ShellExecute         Method     void ShellExecute (string, Variant, Vari...

ShowBrowserBar       Method     Variant ShowBrowserBar (string, Variant)

ShutdownWindows      Method     void ShutdownWindows ()

Suspend              Method     void Suspend ()

TileHorizontally     Method     void TileHorizontally ()

TileVertically       Method     void TileVertically ()

ToggleDesktop        Method     void ToggleDesktop ()

TrayProperties       Method     void TrayProperties ()

UndoMinimizeALL      Method     void UndoMinimizeALL ()

Windows              Method     IDispatch Windows ()

WindowsSecurity      Method     void WindowsSecurity ()

Application          Property   IDispatch Application () {get}

Parent               Property   IDispatch Parent () {get}

Ezzel láthatóvá váltak a Shell.Application tagjellemzői, azaz a Windows szkriptből is könnyen elérhető szolgáltatásai, mint például a súgó megnyitása vagy akár egy mappa megnyitása a Windows Intézőben:

[4] PS C:\> $sh.help()

[5] PS C:\> $sh.explore("C:\scripts")

Természetesen az így megnyitott Súgóval vagy az Intézővel olyan sok mindent nem tudunk PowerShellel továbbiakban kezdeni, ez inkább csak a COM objektumok kezelésének a legegyszerűbb és látványos demonstrációja akart lenni. Sokkal praktikusabb lett volna például a ShutdownWindows metódus meghívása, de ezt a tisztelt olvasóra bízom J.

Ami tényleg hasznos (lenne) itt, az az ablakok listázása, azaz azon processzeket tudjuk ezzel kiszűrni, amelyekhez ablaki is tartozik:

[6] PS C:\> $sh = New-Object -ComObject Shell.Application

[7] PS C:\> $sh.Windows() | ft name, fullname -AutoSize

 

Name                      FullName

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

Windows Internet Explorer C:\Program Files (x86)\Internet Explorer\iexplore...

Windows Internet Explorer C:\Program Files (x86)\Internet Explorer\iexplore...

Windows Internet Explorer C:\Program Files (x86)\Internet Explorer\iexplore...

Windows Internet Explorer C:\Program Files (x86)\Internet Explorer\iexplore...

Azonban itt meg az a baj, hogy csak a 32 bites COM alkalmazásokat listázza ki…



Word To HTML Converter