HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Információk lekérdezése a processzorról WMI-al


Példaprogram letöltése

4492 bájt

A WMI (Windows Management Instrumentation) segítségével a legváltozatosabb információkat kérdezhetjük le a számítógépünkről. Elegendő a megfelelő objektummal felvennünk a kapcsolatot, és meghívni annak metódusát vagy lekérdezni egy tetszőleges property-t. Ha olyan alkalmazást készítünk, melynek szüksége van a processzorral kapcsolatos adatokra, akkor ezek az információk a WMI segítségével könnyedén lekérdezhetők. Cikkünkben bemutatjuk, melyik osztályról van szó, és hogyan használhatjuk.

A mellékelt példa megnyitása előtt válasszuk a Project - Import type library menüpontot, majd keressük elő a Microsoft WMI Scripting tételt. Importálás után létrejön egy WbemScripting_TLB unit, mely komponenseket is tartalmaz, amelyeket célszerű rögtön telepítenünk.
Annak érdekében, hogy a processzor adatait elérjük, a Win32_Processor WMI osztály tulajdonságait kell lekérdeznünk. Az osztály számtalan property-vel rendelkezik, ezeket kigyűjtve megjelenítjük a Form ListBox komponensében.
A Form jobboldali szegmensében néhány property értékét megjelenítjük egy-egy címkén. Az osztály jellemzője, hogy a multiprocesszoros rendszerekben minden egyes processzort egy-egy Win32_Processor osztály reprezentál.
A mellékelt példában tehát felvesszük a kapcsolatot az osztállyal, és minden property-t kiértékelünk, majd amennyiben értékes adatot kapunk, azt megjelenítjük. A property-k karakterláncot vagy valamilyen numerikus értéket adnak eredményül.
A kapcsolatfelvételhez egy TSWbemLocator objektumot kell a Form-on elhelyeznünk. A TSWbemLocator komponens ConnectServer metódusával kapcsolódunk a rendszerünkhöz.
Service := SWbemLocator1.ConnectServer('.', 'root\CIMV2', '', '', '',      '', 0, nil);
Az eredményül kapott ISWbemServices objektum Get metódusával érhetjük el az adott osztályt.
SObject:= Service.Get('Win32_Processor', wbemFlagUseAmendedQualifiers, nil);
Ahhoz, hogy az adott osztály property-jeit elérhessük, a Get metódus visszatérési értékeként kapott ISWbemObject objektum tulajdonságait kell felhasználnunk. Az objektum Instances_ metódusa adja vissza az objektumpéldányokat.
ObjectSet:= SObject.Instances_(0, nil);
Végeredményben egy ISWbemPropertySet kollekciót kell használnunk.
Enum:= (ObjectSet._NewEnum) as IEnumVariant;
Enum.Next(1, TempObj, Value);
SObject:= IUnknown(TempObj) as SWBemObject;
PropSet := SObject.Properties_;
PropEnum := (PropSet._NewEnum) as IEnumVariant;
A property-kollekció minden elemén végigmegyünk egy WHILE ciklussal, és meghívjuk a ListProperties saját metódusunkat, melyben elvégezzük az adott információ megjelenítését.
while (PropEnum.Next(1, TempObj, Value) = S_OK) do begin
  prop:= IUnknown(TempObj) as SWBemProperty;
  ListProperties(prop);
end;
A property-k közt találunk olyanokat, melyek konkrétan tartalmazzák az információt, mások viszont konstansokat tartalmaznak, melyek adott jelentéssel bírnak. Ilyen például a processzor osztály Architecture property-je, melynek 5 lehetséges értéke lehet, attól függően, hogy a processzor milyen architektúrával rendelkezik. Ezek lehetnek:
  • 0: x86
  • 1: MIPS
  • 2: Alpha
  • 3: PowerPc
  • 6: ia64

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