http://dieseyer.de • all rights reserved • © 2011 v11.4

'*** v6.1 *** www.dieseyer.de *******************************
' File: progr-cpu-last-test.vbs
' Autor: dieseyer@gmx.de
' dieseyer.de
'
' schreibt über 10s drei Werte in eine LOG-Datei:
'
'
' Microsoft: The Portable Script Center - v3.0, Nov. 2004
' "Monitor Process Performance"
'
'************************************************************

Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl

Dim Txt, n, Progr
Progr = "C:\Programme\AVPersonal\AVWIN.EXE"
Progr = """C:\Programme\AntiVir PersonalEdition Classic\avcenter.exe"""

Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell")


' LOG-Datei für Protokollierung öffnen
Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim FileOut : Set FileOut = fso.OpenTextFile( Replace( WSCript.ScriptName, "vbs", "log" ), 2, true)


' WMI bereit stellen
Dim objWMIService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Dim objRefresher : Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Dim colItems : Set colItems = objRefresher.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfProc_Process").objectSet
Dim objItem


' zu überwachendes Programm starten
fileOut.WriteLine( now() & vbTab & "Wird gestartet: " & Progr )
WshShell.Run Progr, , False ' nicht aufs Ende des gestarteten Programms warten
fileOut.WriteLine( now() & vbTab & "Läuft : " & Progr )


' ProgrammName, ohne Erweiterung und ohne Pfad
Progr = Replace( Progr, """", "" )
Progr = Mid( Progr, InStrRev( Progr, "\" ) + 1 )
Progr = Left( Progr, InStrRev( Progr, "." ) - 1 )
' MsgBox Progr, , "0043 :: " & WScript.ScriptName : WScript.Quit


' gestartetes Programm überwachen
objRefresher.Refresh
Do
For Each objItem in colItems
If InStr( LCase( objItem.Name ), LCase( Progr ) ) > 0 Then
Txt = Txt & "Handle Count: " & objItem.HandleCount & vbTab
Txt = Txt & "Percent Processor Time: " & objItem.PercentProcessorTime & vbTab
Txt = Txt & "Working Set: " & objItem.WorkingSet & vbTab

fileOut.WriteLine( now() & vbTab & Txt ) : Txt = ""
End If
Next
wscript.sleep( 100 ) : n = n + 1 : If n > 100 Then Exit Do
objRefresher.Refresh
Loop

fileOut.WriteLine( "0062 :: " & now() & vbTab & "Skriptende" )
fileOut.Close
Set FileOut = Nothing ' Datei schließen



'*** v6.1 *** www.dieseyer.de *******************************
Function Now()
'************************************************************

' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' ! ! ! Damit funktioniert natürlich DateDiff nicht mehr ! ! !
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Now gibt jetzt einen String und kein (verwendbares) Datum zurück

Now = Date & " " & Time & ",00"

' Wenn Timer() ein Komma enthält, wird: Now = Date & " " & Time & [Rest von Timer]
If InStr( Timer(), "," ) > 0 Then Now = Date & " " & Time & Mid( Timer(), InStr( Timer(), "," ) )

' Wenn Timer() nach dem Komma einstellig ist, wir eine 0 angehangen
If Len( Mid( Now, InStrRev( Now, "," ) ) ) = 2 Then Now = Now & "0"

End Function ' Now()

http://dieseyer.de • all rights reserved • © 2011 v11.4