HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Monitor kártya hardver információinak lekérdezése


Példaprogram letöltése

5787 bájt

A számítógépünkben lévő monitor kártyákról sokféle információ megtalálható a Windows Registry adatbázisban, csak tudni kell, hogy hol keressük azokat. Ezek az információk eléggé szétszórtan helyezkednek el az adatbázisban, ezért most egy olyan programot készítettünk, ami megkeresi, és meg is jeleníti azokat.
Az adatok lekérdezését rögtön a Form OnShow eseményénél lekérdezzük, így mire megjelenik az ablak, már láthatók is az információk. A Registry-ben kell kutatnunk az adatok után, ezért nyilván szükségünk lesz egy TRegistry osztályra ehhez.
procedure TForm1.FormShow(Sender: TObject);
var Enum:TStringList;
    Reg:TRegistry;
    i:integer;
    HardwareKey, SoftwareKey:string;
begin
A számítógép hardver elemeinek listája a "HKEY_DYN_DATA\Config Manager\Enum" kulcs alatt vannak felsorolva. Ezt a listát egy TStringList típusú osztályban tároljuk, ezért ehhez létrehozunk egy Enum nevű változót TStringList típussal.
  Enum:=TStringList.Create;
  Reg:=TRegistry.Create;
A kulcs gyökere a HKEY_DYN_DATA kulcs. Ezt a RootKey property-vel állítjuk be.
  Reg.RootKey:=HKEY_DYN_DATA;
Megpróbáljuk megnyitni a "Config Manager\Enum" kulcsot. Ha ez sikerült, akkor az ez alatt található kulcsokat a GetKeyNames függvénnyel eltároljuk az Enum listába. Ezután lezárjuk a megnyitott kulcsot.
  if Reg.OpenKey('Config Manager\Enum', false) then begin
    Reg.GetKeyNames(Enum);
    Reg.CloseKey;
Egy ciklussal végigmegyünk az Enum lista elemein. A HKEY_DYN_DATA lesz a gyökér kulcs.
    i:=0;
    while i<Enum.Count do begin
      Reg.RootKey:=HKEY_DYN_DATA;
Megpróbáljuk megnyitni a lista első elemében tárolt kulcsot. Ha sikerült, akkor kiolvassuk a "HardwareKey" értékét, és ezt eltároljuk a HardwareKey változóban. Ez egy kulcs útvonala lesz, ahol további információkat találunk a hardver elemről.
      if Reg.OpenKey('Config Manager\Enum\'+Enum[i], false) then begin
        HardwareKey:=Reg.ReadString('HardWareKey');
        Reg.CloseKey;
Most a HKEY_LOCAL_MACHINE gyökér alatt kell tovább kutatnunk. Itt az Enum kulcs alatt a HardwareKey változóban eltárolt útvonalon találjuk meg a további információkat. Bennünket csak a videokártya érdekel, ezért ellenőrizzük, hogy a Class mező értéke "Display"-e. Ha igen, akkor videokártyát találtunk, és folytathatjuk az adatok kigyűjtését.
     
        Reg.RootKey:=HKEY_LOCAL_MACHINE;
        if Reg.OpenKey('Enum\'+HardwareKey, false) then begin
          if LowerCase(Reg.ReadString('Class'))='display' then begin
Kiolvassuk a bennünket érdeklő adatokat, és a Form-ra helyett ListBox-ban megjelenítjük azokat.
            ListBox1.Items.Append('Device description: '+Reg.ReadString('DeviceDesc'));
            ListBox1.Items.Append('HWRevision: '+Reg.ReadString('HWRevision'));
            ListBox1.Items.Append('InitAdapterPowerState:'+Reg.ReadString('InitAdapterPowerState'));
            ListBox1.Items.Append('Mfg.: '+Reg.ReadString('Mfg'));
A SoftwareKey változóban eltároljuk a Driver mező tartalmát, kiegészítve a "System\CurrentControlSet\Services\Class\" útvonallal. Ezen az útvonalon találjuk meg a videokártya meghajtó programjának adatait.
            SoftwareKey:='System\CurrentControlSet\Services\Class\'+Reg.readString('Driver');
            Reg.CloseKey;
Megpróbáljuk megnyitni a SoftwareKey változóban eltárolt útvonalat. Ha sikerült, akkor kiolvassuk a videokártya driver adatait.
            if Reg.OpenKey(SoftwareKey, false) then begin
              ListBox1.Items.Append('Driver Date: '+Reg.ReadString('DriverDate'));
              ListBox1.Items.Append('Driver description: '+Reg.ReadString('DriverDesc'));
              ListBox1.Items.Append('InfPath: '+Reg.ReadString('InfPath'));
              ListBox1.Items.Append('InfSection: '+Reg.ReadString('InfSection'));
              ListBox1.Items.Append('MatchingDeviceID: '+Reg.ReadString('MatchingDeviceID'));
              ListBox1.Items.Append('Provider Name: '+Reg.ReadString('ProviderName'));
              ListBox1.Items.Append('Version: '+Reg.ReadString('Ver'));
              Reg.CloseKey;
Ugyanitt a DEFAULT és INFO kulcs alatt további információkat találhatunk. Sőt, van itt egy MODES nevű kulcs, ami alatt a kártya által támogatott színmélységeket, és azok alatt a felbontásokat és a lehetséges képfrissítési értékeket is megtalálhatjuk.
              if Reg.OpenKey(SoftwareKey+'\DEFAULT', false) then begin
                ListBox1.Items.Append('DDC: '+Reg.ReadString('DDC'));
                ListBox1.Items.Append('Driver: '+Reg.ReadString('drv'));
                ListBox1.Items.Append('Driver 2.: '+Reg.ReadString('drv2'));
                ListBox1.Items.Append('Minivdd: '+Reg.ReadString('minivdd'));
                ListBox1.Items.Append('Default mode: '+Reg.ReadString('Mode'));
                ListBox1.Items.Append('Refresh rate: '+Reg.ReadString('RefreshRate'));
                ListBox1.Items.Append('VDD: '+Reg.ReadString('vdd'));
                Reg.CloseKey;
              end;
              if Reg.OpenKey(SoftwareKey+'\INFO', false) then begin
                ListBox1.Items.Append('Chip Type: '+Reg.ReadString('ChipType'));
                ListBox1.Items.Append('DAC Type: '+Reg.ReadString('DACType'));
                Reg.CloseKey;

Cikksorozat

#IDKategóriaCikk címeSorozat
3333WindowsNet Shell parancsok1. rész
3367WindowsNet Shell parancsok2. rész
3396WindowsNet Shell parancsok3. rész


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