Hi
You can use WMI, as long as you don't have to support Windows 9x clients (as the class used was introduced in Windows 2000). If you need to interrogate multiple processors then change the Name property in the query to 1,2,3 etc.
declare Sleep in WIN32API integer
oWMIService = getobject("winmgmts:\\")
oItems = oWMIService.ExecQuery ;
("Select * From Win32_PerfRawData_PerfOS_Processor where name = '0'")
for each oItem in oItems
nPercentUsed1 = val(oItem.PercentUserTime)
nTimeValue1 = val(oItem.TimeStamp_Sys100NS)
next
for nCounter = 1 to 5
Sleep(100)
oItems = oWMIService.ExecQuery ;
("Select * From Win32_PerfRawData_PerfOS_Processor where name = '0'")
for each oItem in oItems
nPercentUsed2 = val(oItem.PercentUserTime)
nTimeValue2 = val(oItem.TimeStamp_Sys100NS)
if nTimeValue2 - nTimeValue1 = 0
nPercentProcessorTime = 0
else
nPercentProcessorTime = 100 * (nPercentUsed2 - nPercentUsed1) / ;
(nTimeValue2 - nTimeValue1)
? transform(nPercentProcessorTime) + "% used"
endif
nPercentUsed1 = nPercentUsed2
nTimeValue1 = nTimeValue2
next
next