VBS -> PB bzw. Alternativen zu Systeminfos

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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 :shock:) scripts.zip

Grüße, Mok
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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
a²+b²=mc²
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag von Mok »

:shock:
Also, dass es so einfach geht... damit hätte ich jetzt nicht gerechnet :D
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag von Kiffi »

Mok hat geschrieben:Also, dass es so einfach geht...
wenn man weiß, wie's geht, dann ja.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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
a²+b²=mc²
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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()
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: VBS -> PB bzw. Alternativen zu Systeminfos

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten