Wie ermittle ich per VBS max. Farbtiefe + FPS für: 800x600p?
Zur Auswertung für die besten Werte mit einer älteren Graka-Auflösung würde ich mir gerne die maximal mögliche Farbtiefe und die maximal mögliche FPS (Hertz) einer von mir gewählten Auflösung wie z.B. 800x600 Pixel ausgeben lassen.
Wie kann ich das per VBS herausfinden (das hat irgendwie mit "CIM_VideoController" zu tun, aber mehr weiß ich nicht.
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Technik, programmieren
Necromancer...Leichen fleddern bis zum bitteren Ende😅
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
selctItems = "*"
QueryFilter = "where HorizontalResolution=800 and VerticalResolution=600"
Set colItems = objWMIService.ExecQuery("Select " & selctItems & " from CIM_VideoControllerResolution "& QueryFilter,,48)
For Each objItem in colItems
Wscript.Echo "Horizontal Resolution: " & objItem.HorizontalResolution
Wscript.Echo "Number Of Colors: " & objItem.NumberOfColors
Wscript.Echo "Refresh Rate: " & objItem.RefreshRate
Wscript.Echo "Scan Mode: " & objItem.ScanMode
Wscript.Echo "Setting ID: " & objItem.SettingID
Wscript.Echo "Vertical Resolution: " & objItem.VerticalResolution
Wscript.Echo
Next
In Powershell sähe obiges so aus:
Get-CimInstance -Class CIM_VideoControllerResolution -Filter "HorizontalResolution=800 and VerticalResolution=600"
Komplett inklusive der Ermittlung des Höchsten 800x600 Modus sähe es dann so aus.
$Highest800x600 = Get-CimInstance -Class CIM_VideoControllerResolution -Filter "HorizontalResolution=800 and VerticalResolution=600"| #alle 800x600 Modi
select -Property SettingID,HorizontalResolution,VerticalResolution,NumberOfColors,RefreshRate,ScanMode | #Nur die gelisteten Felder weiterreichen
sort -property NumberOfColors,RefreshRate -Descending| #Sortiere nach Farben und Frequenz höchste zuerst
select -first 1 #da der nun 800x600 mit den meisten Farben/Freqenz ganz "vorn" steht, brauchen wir nur das erste Objekt
'the highest 800x600 Mode is:'
$Highest800x600
pause
Ich möchte nie wieder zurück nach dem umständlichen VBS🤮
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Danke, ich habe das Skript nochmal etwas weiter ausgesponnen.
Und ja, derzeit muss ich leider mit VBS weiterarbeiten, weil ich damit auch begonnen habe.
On Error Resume Next
dim list_refreshrate, list_colordepth, resolution
Resolution = "800 600"
'Setze Minimum fps=30, da der Wert sonst 0 ist
list_refreshrate = 30
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from CIM_VideoControllerResolution")
For Each objItem in colItems
' Wandle Anzahl der Farben in Bit (bbp) um (Res-o-Matic kann nur 8,16,32 Bit)
if objItem.NumberOfColors = 256 Then
list_colordepth = 8
End if
if objItem.NumberOfColors = 65536 Then
list_colordepth = 16
End if
if objItem.NumberOfColors = 4294967296 Then
list_colordepth = 32
End if
if (objItem.HorizontalResolution & " " & objItem.VerticalResolution) = Resolution Then
'msgbox objItem.HorizontalResolution & "x" & objItem.VerticalResolution & " --- Farbtiefe: " & objItem.NumberOfColors & " Refresh Rate: " & objItem.RefreshRate
if objItem.RefreshRate > list_refreshrate Then
list_colordepth = objItem.NumberOfColors
list_refreshrate = objItem.RefreshRate
end if
if objItem.NumberOfColors > list_colordepth Then
list_colordepth = objItem.NumberOfColors
list_refreshrate = objItem.RefreshRate
end if
End if
Next
msgbox "Maximalwerte --- Farbtiefe:" & list_colordepth & " FPS:" & list_refreshrate