Et à la fin ça ne marche pas …
Je le laisse ici, ça peu toujours servir en pièces détachées.
Ah au fait !! Le but du code c’est de donner le temps que prend un process du CPU.
Plusieurs morceaux du Code sont des adaptations de codes fait en d’autres langages.

Code : Tout sélectionner
Global bRet.b
Global ftKernel.FILETIME
Global ftUser.FILETIME
Global ftKernelStart.FILETIME
Global ftUserStart.FILETIME
Global ProcessId.L
Global ProcessorCount.l
Global NanoSec.l = 10000000
Global curStart.L
Global curEnd.l
Global curFreq.L
Structure SYSTEM_INFO2
dwOemID.l
dwPageSize.l
lpMinimumApplicationAddress.l
lpMaximumApplicationAddress.l
dwActiveProcessorMask.l
dwNumberOrfProcessors.l
dwProcessorType.l
dwAllocationGranularity.l
dwReserved.l
EndStructure
Global SysInfo.SYSTEM_INFO2
Procedure.l ID_Process(nom.s)
hwnd.l = FindWindow_ ( 0, 0 )
While hwnd <> 0
If GetWindowLong_ (hwnd, #GWL_STYLE ) & #WS_VISIBLE = #WS_VISIBLE
; If GetwindowLong_(Hwnd, #GWL_EXSTYLE) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW
txt.s = Space (256)
GetWindowText_ (hwnd, txt, 256)
If txt = nom
GetWindowThreadProcessId_(hWnd, @LProcessId)
ProcedureReturn LProcessId
EndIf
EndIf
; EndIf
;EndIf
hwnd = GetWindow_ (hwnd, #GW_HWNDNEXT )
Wend
EndProcedure
Procedure GetProcTimes()
hProcess.l = 0
hProcess = OpenProcess_(#PROCESS_QUERY_INFORMATION, 0, ProcessId)
If hProcess
bRet = GetProcessTimes_(hProcess, 0, 0, ftKernel, ftUser)
CloseHandle_(hProcess)
EndIf
EndProcedure
Procedure InitialiseCounter()
GetSystemInfo_(SysInfo)
ProcessorCount = SysInfo\dwNumberOrfProcessors
QueryPerformanceFrequency_(curFreq)
GetProcTimes()
QueryPerformanceCounter_(curStart)
ftKernelStart = ftKernel
ftUserStart = ftUser
EndProcedure
Procedure SetPid(PID.l)
ProcessId = PID
InitialiseCounter()
EndProcedure
Procedure.s GetCpuUsage()
Static ProcTime.d
Static hProcess.l
If ProcessId > 0
GetProcTimes()
QueryPerformanceCounter_(curEnd)
ProcTime = (ftKernel\dwLowDateTime - ftKernelStart\dwLowDateTime + (ftUser\dwLowDateTime - ftUserStart\dwLowDateTime))
ProcTime = CDbl_(ProcTime / ProcessorCount) / CDbl(((curEnd - curStart) / curFreq))
QueryPerformanceCounter_(curStart)
GetCpuUsage = (ProcTime / NanoSec) * 100
ftKernelStart = ftKernel
ftUserStart = ftUser
End If
EndProcedure
Debug ID_Process("btwdins")