Seite 1 von 2
VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 18.07.2010 13:27
von Mok
Hallo.
Ich habe gestern in der com! (7/2010) ein paar nützliche Scripts im VBS-Format gefunden (u. a. zum Auslesen von CPU-Name, -Architektur, -Kernzahl, -Takt, -Hersteller, Cache-Info, BIOS-Info Grafikkarten-Name, -RAM, -Hersteller. Auflisten installierter Programme, sehr genaue Angaben zum RAM (Wieviel RAM ist am Slot 0, wieviel am Slot 1, etc., Typ [DIMM/SIMM], ...)
Da eine direkte Übersetzung von VBS in PB nahezu unmöglich ist (Objektorienterite Skriptsprache vs. prozedurale Hochsprache), suche ich (wenn nicht anders möglich), nach Alternativen (z. B. WinAPI).
Ich hab hier mal alle Scripts hochgeladen (eins ist auch im HTA-Format, weil SQL-Anweisung und so

)
scripts.zip
Grüße, Mok
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 18.07.2010 13:49
von Kiffi
@Mok: Nimm COMate. Die VBS-Syntax lässt sich leicht darauf
anpassen. Hier das Beispiel cpuInfo.vbs:
Code: Alles auswählen
IncludePath #PB_Compiler_Home + "srod\comateplus\"
XIncludeFile "comateplus.pbi"
Define objWMIService.COMateObject
Define objItem.COMateObject
Define colItems.COMateEnumObject
Define Computer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + Computer + "\root\cimv2", "")
If objWMIService
colItems = objWMIService\CreateEnumeration("ExecQuery('SELECT * FROM Win32_Processor')")
If colItems
objItem = colItems\GetNextObject()
While objItem
Debug "Beschreibung: " + objItem\GetStringProperty("Description")
Debug "ID: " + objItem\GetStringProperty("ProcessorId")
Debug "Version: " + objItem\GetStringProperty("Version")
Debug "Revision: " + objItem\GetStringProperty("Revision")
Debug "Kennzeichnung: " + objItem\GetStringProperty("SocketDesignation")
Debug "Typ: " + objItem\GetStringProperty("role")
Debug "Anzahl der Kerne: " + objItem\GetStringProperty("NumberOfCores")
Debug "Anzahl der logischen Kerne: " + objItem\GetStringProperty("NumberOfLogicalProcessors")
Debug "Status: " + objItem\GetStringProperty("Status")
Debug "Aktueller Takt: " + objItem\GetStringProperty("CurrentClockSpeed")
Debug "Maximaler Takt: " + objItem\GetStringProperty("MaxClockSpeed")
Debug "Aktuelle Spannung: " + objItem\GetStringProperty("CurrentVoltage")
Debug "Hersteller: " + objItem\GetStringProperty("ProcessorId")
objItem\Release()
objItem = colItems\GetNextObject()
Wend
colItems\Release()
EndIf
objWMIService\Release()
EndIf
Grüße ... Kiffi
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 18.07.2010 13:55
von Mok
Also, dass es so einfach geht... damit hätte ich jetzt nicht gerechnet

Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 18.07.2010 14:53
von Kiffi
Mok hat geschrieben:Also, dass es so einfach geht...
wenn man weiß, wie's geht, dann ja.
Grüße ... Kiffi
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 18.07.2010 23:25
von Mok
OK, ich bin gerade dabei, eine kostenlose Alternative zu EVEREST zu programmieren, allerdings kann EVEREST weit mehr Systeminfos auslesen (z.B. Motherboard-Chipsatz, weitere RAM-Details: DDR2-800 SDRAM, sämtliche Temperaturen und Lüfterdrehzahl in %)... nur wie?
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 18.07.2010 23:49
von Kiffi
hier findest Du den WMI Code Creator v1.0 von Microsoft,
mit dem Du anschauen kannst, welche Informationen via
WMI ermittelt werden können.
Einfach mal ein wenig stöbern...
Grüße ... Kiffi
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 19.07.2010 11:54
von Mok
Die Variablen lassen sich auch im MSDN finden:
Win32_Processor Class (Windows)
Mein Problem: EVEREST kann viel mehr Infos auslesen, wobei ich mich frage, wie die das bewerkstelligen, wenn's afaik keine andere Methode gibt. Eine weitere Kuriosität: Laut EVEREST ist mein BIOS von einem Hersteller namens Insyde Technology. Mit Win32_BIOS kann ich als Hersteller allerdings nur Hewlett-Packard auslesen.
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 19.07.2010 11:58
von NicTheQuick
Ich vermute mal, dass einige Sachen, die dir EVEREST als Text anzeigt in Wirklichkeit Hersteller-IDs, Modellnummern und dergleichen sind. Dann muss EVEREST ja nur eine Tabelle mitliefern, die diese Nummern auf einen String mapt. Und je nachdem können solche Nummern sicherlich auch mal doppeldeutig sein.
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 19.07.2010 12:18
von Mok
@Nic: Schon möglich, aber wie kann EVEREST z. B. den CPU-Befehlssatz (in meinem Fall "x86, x86-64, MMX, 3DNow!, SSE, SSE2, SSE3") auslesen? So eine funktion gibt es im WMI nicht... (oder ich hab sie noch nicht gefunden, weil sie nicht in Win32_Processor drin ist)
@Topic: Wie ist es möglich, dass EVEREST (scheiß Capslock) Temperaturen und Lüfterdrehzahlen ausliest, während bei mir (und auch bei WMI - ich hab einfach den Code übersetzt) das Konsolenfenster schrecklich leer bleibt.
Code: Alles auswählen
IncludePath #PB_Compiler_Home + "srod\comateplus\"
XIncludeFile "comateplus.pbi"
Macro Get(_objProp)
+ objItem\GetStringProperty(_objProp)
EndMacro
OpenConsole()
Define objWMIService.COMateObject
Define objItem.COMateObject
Define colItems.COMateEnumObject
Define Computer.s = "."
objWMIService = COMate_GetObject("winmgmts:\\" + Computer + "\root\cimv2","")
If objWMIService
colItems = objWMIService\CreateEnumeration("ExecQuery('SELECT * FROM Win32_TemperatureProbe')")
If colItems
objItem = colItems\GetNextobject()
While objItem
PrintN("Verfügbarkeit: " Get("Avaibility"))
PrintN("Beschreibung: " Get("Description"))
PrintN("Geschwindigkeit: "Get("DesiredSpeed"))
objItem\Release()
objItem = colItems\GetNextObject()
Wend
Else
PrintN("colItems = 0")
EndIf
Else
PrintN("ObjWMIService = 0")
EndIf
Input()
Re: VBS -> PB bzw. Alternativen zu Systeminfos
Verfasst: 19.07.2010 12:37
von ts-soft
Mok hat geschrieben:@Nic: Schon möglich, aber wie kann EVEREST z. B. den CPU-Befehlssatz (in meinem Fall "x86, x86-64, MMX, 3DNow!, SSE, SSE2, SSE3") auslesen? So eine funktion gibt es im WMI nicht... (oder ich hab sie noch nicht gefunden, weil sie nicht in Win32_Processor drin ist)
Da kann man die CPU direkt fragen, Everest installiert auch einen Kernel-Treiber und liefert genauere Ergebnisse als WMI.
WMI-Daten werden nicht alle aktualisiert, sondern enthalten viele Werte, die während der Windows-Installation Gültigkeit
hatten, aber nicht mehr haben müssen.
Tools, die Systeminfos nur über WMI wiedergeben sind IMHO unnütz. Man kann die Infos damit zwar ergänzen, mehr aber
auch nicht, oder für so einen billigen SystemInfo-Dialog in einer AboutBox ist es gerade ausreichend.
Gruß
Thomas