WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

WMI
plus
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Total CPU Usage

 Keywords: Percent Total CPU Usage Time Processor PercentProcessorTime IDProcess

Get on-going performance data for a specific process without repeated polling
; Get on-going performance data for a specific process without repeated polling

strComputer = "."
objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" : strComputer : "\root\cimv2")
PerfProcess = objWMIService.Get("Win32_PerfFormattedData_PerfProc_Process.Name='Notepad'")
WindowOnTop( "", 1 )
BoxOpen('Performance data (refreshed every 1 second)', 'Initiating Process...')
While @TRUE
    PerfProcess.Refresh_
    BoxText("Press Ctrl+Break to Cancel Processing":@CRLF:@CRLF: PerfProcess.PercentProcessorTime)
    TimeDelay(1)
EndWhile
PerfProcess = 0
objWMIService = 0
Exit

Get on-going performance data for all processes without repeated polling

; Get on-going performance data for all processes without repeated polling

strComputer = "."
objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" : strComputer : "\root\cimv2")
objRefresher = CreateObject("WbemScripting.Swbemrefresher")
objProcessor = objRefresher.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").ObjectSet

WindowOnTop( "", 1 )
BoxOpen('Performance data (refreshed every 5 seconds)', 'Initiating Process...')
While @TRUE
    objRefresher.Refresh
        ForEach RefreshItem In objRefresher
            ForEach objProcess In RefreshItem.ObjectSet
                data = objProcess.GetObjectText_
                arrData = Arrayize(data, ";")
                ; Obtain only data from _Total
                ptr =  StrIndexNC( data, "_Total", 1, @FWDSCAN )
                If ptr != 0
                  mydata = arrData[14]; PercentProcessorTime
                   BoxText("Press Ctrl+Break to Cancel Processing":@CRLF:@CRLF:mydata)
                EndIf
            Next
        Next
    TimeDelay(5)
EndWhile

objProcessor = 0
objRefresher = 0
objWMIService = 0
Exit


Using older version techniques - Get on-going performance data for all processes without repeated polling

; Using older version techniques

checkevery = 2 ; seconds

objLocator = ObjectOpen("WbemScripting.SWbemLocator")
objWMIService = objLocator.ConnectServer("","root/cimv2","","")

objRefresher = ObjectOpen("WbemScripting.Swbemrefresher")
objProcessor = objRefresher.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").ObjectSet

WindowOnTop( "", 1 )
BoxOpen(StrCat('Performance data (refreshed every ',checkevery,' seconds)'), 'Initiating Process...')
While @TRUE
    objRefresher.Refresh
        hEnum1 = ObjectCollectionOpen(objRefresher)
        While 1
           objRefreshItem = ObjectCollectionNext(hEnum1)
           If objRefreshItem == 0 Then Break

           hEnum2 = ObjectCollectionOpen(objRefreshItem.ObjectSet)
           While 1
                objProcess = ObjectCollectionNext(hEnum2)
                If objProcess == 0 Then Break
                data = objProcess.GetObjectText_
                ; Obtain only data from _Total
                ptr =  StrIndexNC( data, "_Total", 1, @FWDSCAN )
                If ptr != 0
                   mydata = ItemExtract( 15, data, ';' ); PercentProcessorTime
                   BoxText(StrCat("Press Ctrl+Break to Cancel Processing",@CRLF,@CRLF,mydata))
                EndIf
                ObjectClose(objProcess)
            EndWhile
            ObjectCollectionClose(hEnum2)
            ObjectClose(objRefreshItem)
        EndWhile
        ObjectCollectionClose(hEnum1)
    TimeDelay(checkevery)
EndWhile

ObjectClose(objProcessor)
ObjectClose(objRefresher)
ObjectClose(objWMIService)
ObjectClose(objLocator)
Exit

Article ID:   W18477
Filename:   Total CPU Usage.txt
File Created: 2012:10:29:12:50:26
Last Updated: 2012:10:29:12:50:26