HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

NT szervizek státuszának meghatározása


Példaprogram letöltése

14576 bájt

A mellékelt példában egy olyan komponenst készítünk, melynek használatával könnyedén megállapíthatjuk az NT-n futó egy-egy szerviz alkalmazás státuszát, rá jellemző értékeit, például, hogy fut-e, vagy sem.
A mellékelt példaprogram megnyitása előtt a ServiceStatus.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponens használatához első lépésként a Machine property-be be kell írnunk a kérdéses számítógép nevét. Ezután a ServiceName property-ből választhatjuk ki, hogy melyik szerviz alkalmazás státuszára vagyunk kíváncsiak. Ha a művelet sikeres volt, akkor a Status property-n belül máris láthatóak a lekérdezett értékek. Ez a property egy összetett, objektum típusú property. Nézzük milyen tulajdonságokkal rendelkezik.

Ha a Ready property-e igaz, akkor a Status-on belül az összes többi property feldolgozható értéket tartalmaz. Ha a Ready hamis, akkor vagy sikertelen volt a lekérdezés, vagy még nem is történt meg egy szerviz alkalmazás információnak a lekérdezése. Ebben az esetben a Status-on belül a többi property értéke sem használható fel.

A ServiceTypes property-ből olvashatjuk ki, hogy milyen típusú az adott szerviz alkalmazás.
A CurrentState-ből az állapítható meg, hogy fut-e, vagy sem a program.
A ControlsAccepted property-ből megtudhatjuk, hogy a szerviz alkalmazás milyen parancsokat fogad el. Ilyen lehet például a leállításra, vagy a felfüggesztésre való utasítás.

A komponens megvalósításánál a QueryServiceStatus függvénnyel kérdezzük le a Status property értékeit. Ennél egy TServiceStatus struktúrát kell átadnunk, melybe visszakapjuk az eredményeket. Az egyes property-k neve és így a funkciójuk is egyezik a TServiceStatus struktúra mezőivel.

Ahhoz, hogy a QueryServiceStatus használható legyen, először kapcsolatot kell teremtenünk a Service Control Manager-el. Ehhez az OpenSCManager hívása szükséges. Ha ez sikeresen megtörtént, akkor megnyitjuk a kiválasztott szervizt az OpenService függvénnyel. Itt paraméterként a SERVICE_QUERY_STATUS konstanst használjuk jelezve, hogy annak státusz információit szeretnénk lekérdezni. Ha ez is sikeresen lefutott, akkor jöhet a QueryServiceStatus hívása, majd a kapott értékek feldolgozása és elhelyezése a Status property egyes értékeibe.

A ServiceName property-ben megjelenítjük az összes elérhető szerviz alkalmazás nevét. Az ehhez használt algoritmust a múlt héten közölt cikkből vettük át, így ennek részletezésével nem foglalkozunk itt. Említésre csak annyi érdemes, hogy itt most nem csak a szerviz megjelenítendő neveit (lpDisplayName) kérdezzük le, hanem magának a szerviznek a neveit (lpServiceName) is. Erre majd az OpenService-nél lesz szükségünk.


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 192. 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 |