Windows - Videokártya típusának és főbb paramétereinek meghatározása szkriptből

forráskód letöltése
Elsősorban programozóknak kell tudni, hogy mekkora az aktuális képernyőfelbontás és színmélység, ahhoz hogy az általuk készített alkalmazást megfelelően lehessen működtetni. Zsúfolt, sok komponenst tartalmazó ablakok számára kicsinek bizonyulhat a 800x600-as felbontás. A 8 bites színmélység pedig ma már szinte sehol sem elégséges. Az ellenőrzést a program indulása előtt kell végrehajtani, egyik lehetséges variációként szkriptből. Azért előnyös a szkriptek használata, mert bármelyik programozási nyelvből meghívható, de természetesen közvetlenül is használhatjuk az alábbi rendszerfüggvényeket.
Cikkünkhöz mellékeltük az alábbi szkriptet "VideoCard.vbs" néven. Futtatása a "Start.bat" fájllal történik.
A WMI (Windows Management Instrumentation) szolgáltatás "CIM_VideoController" osztálya kezeli a számítógépben lévő videokártyákat. A CIM (Common Information Model) előtaggal kezdődő osztályok alaposztályok, belőlük vannak származtatva a programokban általánosabban használt osztályok. A hardverközeliség miatt fordulunk hozzájuk, így "egyenesen" a videokártyától tudjuk meg, hogy milyen típusú, mekkora az aktuális felbontás, stb. és nem valamely szolgáltatástól. Ezért nincsenek további feltételei a szkript működésének, nem kell telepíteni semmit, elég maga az operációs rendszer.
Elsőként fel kell venni a kapcsolatot a WMI-al. Tesszük ezt a szkriptet futtató felhasználó hitelesítési adataival ("impersonationLevel = impersonate"). Ezután lekérdezzük a "CIM_VideoController" osztály összes tulajdonságát ("Select * ..."). FOR ciklussal hajtjuk végre a lekérdezést, mert lehet, hogy több videokártya van a gépben.
for each VideoController in GetObject("winmgmts:{impersonationLevel = impersonate}!root/cimv2").ExecQuery ("select * from CIM_VideoController")
A kapott eredményt kiíratjuk a képernyőre, tulajdonságonként szétválogatva őket. Első lesz a "Description" (~leírás), ami egy "barátságos" nevet tárol a hardverről (pl.: NVIDIA GeForce2 MX/MX 400).
WScript.echo "Videokártya: " & VideoController.Description
Következik a kártyán lévő videoprocesszor típusa, majd a jobb láthatóság érdekében beszúrunk egy üres sort.
WScript.echo "Videoprocesszor típusa: " & VideoController.Videoprocessor
WScript.echo
Amire leggyakrabban lehet szükségünk: az aktuális felbontás, színmélység és speciális programoknál esetleg a képernyőfrissítés gyakorisága. Utóbbit már csak érdekességként is ellenőrizhetjük és kiírathatjuk a felhasználónak, hogy például a 85 Hz alatti frekvencia erősen fárasztja a szemet. A pillanatnyi vízszintes felbontás a "CurrentHorizontalResolution", a függőleges a "CurrentVerticalResolution" tulajdonságokban tárolódik. A színmélységet a "CurrentBitsPerPixel" értékeként kapjuk meg. Vegyük figyelembe, hogy 16 bit alatt már csorbulhat a megjelenítés színhűsége. Végül jöjjön a már említett frissítési frekvencia a "CurrentRefreshRate" tulajdonságban.
WScript.echo "Aktuális felbontás: " & VideoController.CurrentHorizontalResolution & " x " & VideoController.CurrentVerticalResolution & " / " & VideoController.CurrentBitsPerPixel & " bit" & " " & VideoController.CurrentRefreshRate & " Hz"
Maradjunk még egy kicsit a képernyő frissítési frekvenciánál. Ha programból állítjuk, tudnunk kell, hogy milyen határok között mozoghatunk. Túl magas értéknél elmegy a kép (a monitor önvédelme), de a régebbi monitorok akár tönkre is mehetnek. Az alacsony érték pedig károsítja a látást, fárasztja a szemet és az idegrendszert. Megoldás: állítsuk be a hardver által elérhető legmagasabb vagy közel legmagasabb frekvenciát (a legmagasabbnál a gyengébb minőségű monitorok homályosabb képet adhatnak).
WScript.echo "Maximális frekvencia: " & VideoController.MaxRefreshRate & " Hz"
WScript.echo "Minimális frekvencia: " & VideoController.MinRefreshRate & " Hz"
WScript.echo
Zárjuk a sort néhány kevésbé fontos paraméterrel: ilyenek a rendszerben az eszközazonosítók.
WScript.echo "PnP eszközazonosító: " & VideoController.PNPDeviceID
WScript.echo "Eszközazonosító: " & VideoController.DeviceID
Ha a "Status" tulajdonság "OK"-tól eltérő értéket ad vissza, valamilyen probléma van az eszközzel.
WScript.echo "Státusz: " & VideoController.Status
Lekérhetjük a videomemória típusát is. A kapott szám a következőket jelenti:
Kapott érték Memória típusa
1 Ismeretlen
2 Nem meghatározható
3 VRAM
4 DRAM
5 SRAM
6 WRAM
7 EDORAM
8 Burst Synchronous DRAM
9 Pipelined Burst SRAM
10 CDRAM
11 3DRAM
12 SDRAM
13 SGRAM
Sajnos a WMI ezen része még nem ismeri a DDR RAM-okat.
WScript.echo "Videomemória típusa: " & VideoController.VideoMemoryType
Végül zárjuk a FOR ciklust.
Next