Hi,
thanks to garfrost
THis func is by Larry:
CODEFunc CurrentCPU($init = 0)
Global $liOldIdleTime = 0
Global $liOldSystemTime = 0
Local $SYS_BASIC_INFO = 0
Local $SYS_PERFORMANCE_INFO = 2
Local $SYS_TIME_INFO = 3
$SYSTEM_BASIC_INFORMATION = DllStructCreate("int;uint;uint;uint;uint;uint;uint;ptr;ptr;uint;byte;byte;short")
$status = DllCall("ntdll.dll", "int", "NtQuerySystemInformation", "int", $SYS_BASIC_INFO, _
"ptr", DllStructGetPtr($SYSTEM_BASIC_INFORMATION), _
"int", DllStructGetSize($SYSTEM_BASIC_INFORMATION), _
"int", 0)
If $status[0]Then Return -1
While 1
$SYSTEM_PERFORMANCE_INFORMATION = DllStructCreate("int64;int[76]")
$SYSTEM_TIME_INFORMATION = DllStructCreate("int64;int64;int64;uint;int")
$status = DllCall("ntdll.dll", "int", "NtQuerySystemInformation", "int", $SYS_TIME_INFO, _
"ptr", DllStructGetPtr($SYSTEM_TIME_INFORMATION), _
"int", DllStructGetSize($SYSTEM_TIME_INFORMATION), _
"int", 0)
If $status[0]Then Return -2
$status = DllCall("ntdll.dll", "int", "NtQuerySystemInformation", "int", $SYS_PERFORMANCE_INFO, _
"ptr", DllStructGetPtr($SYSTEM_PERFORMANCE_INFORMATION), _
"int", DllStructGetSize($SYSTEM_PERFORMANCE_INFORMATION), _
"int", 0)
If $status[0]Then Return -3
If $init = 1 Or $liOldIdleTime = 0 Then
$liOldIdleTime = DllStructGetData($SYSTEM_PERFORMANCE_INFORMATION, 1)
$liOldSystemTime = DllStructGetData($SYSTEM_TIME_INFORMATION, 2)
Sleep(1000)
If $init = 1 Then Return -99
Else
$dbIdleTime = DllStructGetData($SYSTEM_PERFORMANCE_INFORMATION, 1) - $liOldIdleTime
$dbSystemTime = DllStructGetData($SYSTEM_TIME_INFORMATION, 2) - $liOldSystemTime
$liOldIdleTime = DllStructGetData($SYSTEM_PERFORMANCE_INFORMATION, 1)
$liOldSystemTime = DllStructGetData($SYSTEM_TIME_INFORMATION, 2)
$dbIdleTime = $dbIdleTime / $dbSystemTime
$dbIdleTime = 100.0 - $dbIdleTime * 100.0 / DllStructGetData($SYSTEM_BASIC_INFORMATION, 11) + 0.5
Return $dbIdleTime
EndIf
$SYSTEM_PERFORMANCE_INFORMATION = 0
$SYSTEM_TIME_INFORMATION = 0
WEnd
EndFunc ;==>CurrentCPU