Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Kiffi
Beiträge: 10714 Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Beitrag
von Kiffi » 02.11.2015 18:38
ein einfacher Code, um die CPU-Auslastung mittels WMI auszulesen:
Code: Alles auswählen
EnableExplicit
Define VbScript.s
Define VBS
Define Xml.s
VbScript = "Set objWMIService = GetObject(''winmgmts:\\localhost\root\CIMV2'')" + #CRLF$ +
"Set CPUInfo = objWMIService.ExecQuery(''SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor'',,48)" + #CRLF$ +
"Output = ''<list>''" + #CRLF$ +
"For Each Item in CPUInfo" + #CRLF$ +
" Output = Output & ''<element>'' & Item.PercentProcessorTime & ''</element>''" + #CRLF$ +
"Next" + #CRLF$ +
"Output = Output & ''</list>''" + #CRLF$ +
"WScript.StdOut.Writeline Output" + #CRLF$
VbScript = ReplaceString(VbScript, "''", Chr(34))
CreateFile(0, GetTemporaryDirectory() + "cpuinfo.vbs")
WriteString(0, VbScript)
CloseFile(0)
VBS = RunProgram("wscript", GetTemporaryDirectory() + "cpuinfo.vbs", "", #PB_Program_Open | #PB_Program_Read)
If VBS
Xml = ReadProgramString(VBS)
CloseProgram(VBS)
Else
Debug "!RunProgram"
EndIf
If ParseXML(0, Xml) And XMLStatus(0) = #PB_XML_Success
NewList Value.s()
ExtractXMLList(MainXMLNode(0), Value())
FreeXML(0)
ForEach Value()
Debug "PercentProcessorTime: " + Value()
Next
Else
Debug XMLError(0)
EndIf
Grüße ... Peter
a²+b²=mc²
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
Beitrag
von NicTheQuick » 02.11.2015 18:50
Deinen String kannst du jetzt auch einfacher schreiben:
Code: Alles auswählen
Define.s VbScript
VbScript = ~"Set objWMIService = GetObject(\"winmgmts:\\\\localhost\\root\\CIMV2\")\r\n" +
~"Set CPUInfo = objWMIService.ExecQuery(\"SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor\",,48)\r\n" +
~"Output = \"<list>\"\r\n" +
~"For Each Item in CPUInfo\r\n" +
~" Output = Output & \"<element>\" & Item.PercentProcessorTime & \"</element>\"\r\n" +
~"Next\r\n" +
~"Output = Output & \"</list>\"\r\n" +
~"WScript.StdOut.Writeline Output\r\n"
Debug VbScript
RSBasic
Admin
Beiträge: 8047 Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:
Beitrag
von RSBasic » 02.11.2015 20:01
Aber wenn man den Code nutzen möchte, dann unbedingt prüfen, ob die Ausführung von Scripten erfolgreich war oder ob diese vom Benutzer oder von Sicherheitsrichtlinien deaktiviert wurde.
Es gibt Unternehmen oder Privatpersonen, die solche Scripte nicht zulassen.
Schade, dass PB nativ kein WMI kann. Vielleicht irgendwann.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Kiffi
Beiträge: 10714 Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Beitrag
von Kiffi » 02.11.2015 20:13
@NicTheQuick:
Weiß ich. Ich finde meine Version aber lesbarer.
RSBasic hat geschrieben: Schade, dass PB nativ kein WMI kann. Vielleicht irgendwann.
nie und nimmer. Da können (gefühlte) 95% aller PB-User noch so bitten und betteln.
Grüße ... Peter
a²+b²=mc²