CPU 使用率の取得サンプル (2000 / XP)
Posted: 2005年12月01日(木) 22:36
1 秒毎に CPU 使用率を取得します。
暇があれば 9x 系にも対応したいと思います。
[ここをクリックすると内容が表示されます]
件名の通り Windows 2000 / XP 用です。コード: 全て選択
#N88BASIC
Declare Function NtQuerySystemInformation Lib "ntdll.dll" (dwInfoType As DWord,lpStructure As VoidPtr,dwSize As DWord,dwReserved As DWord) As DWord
Type SYSTEM_PERFORMANCE_INFORMATION
IdleTime As LARGE_INTEGER
KernelTime As LARGE_INTEGER
UserTime As LARGE_INTEGER
Reserved1[2] As LARGE_INTEGER
Reserved2 As LARGE_INTEGER
End Type
Dim OldSPI As SYSTEM_PERFORMANCE_INFORMATION
Dim SPI As SYSTEM_PERFORMANCE_INFORMATION
Dim OldUserTime As QWord
Dim OldKernelTime As QWord
Dim OldIdleTime As QWord
Dim UserTime As QWord
Dim KernelTime As QWord
Dim IdleTime As QWord
Dim ResultUserTime As QWord
Dim ResultKernelTime As QWord
Dim ResultIdleTime As QWord
Dim ResultSystemTime As QWord
Dim CPUUsage As QWord
Dim Message[256] As Byte
Do
NtQuerySystemInformation(8,VarPtr(OldSPI),Len(OldSPI),NULL)
Sleep(1000)
NtQuerySystemInformation(8,VarPtr(SPI),Len(SPI),NULL)
memcpy(VarPtr(OldUserTime),VarPtr(OldSPI.UserTime),8)
memcpy(VarPtr(OldKernelTime),VarPtr(OldSPI.KernelTime),8)
memcpy(VarPtr(OldIdleTime),VarPtr(OldSPI.IdleTime),8)
memcpy(VarPtr(UserTime),VarPtr(SPI.UserTime),8)
memcpy(VarPtr(KernelTime),VarPtr(SPI.KernelTime),8)
memcpy(VarPtr(IdleTime),VarPtr(SPI.IdleTime),8)
ResultUserTime=OldUserTime-UserTime
ResultKernelTime=OldKernelTime-KernelTime
ResultIdleTime=OldIdleTime-IdleTime
ResultSystemTime=ResultUserTime+ResultKernelTime
CPUUsage=(ResultSystemTime-ResultIdleTime)*100/ResultSystemTime
lstrcpy(Message,"CPU 使用率: ")
lstrcat(Message,Str$(CPUUsage))
lstrcat(Message," %")
SetWindowText(_PromptSys_hWnd,Message)
Loop
暇があれば 9x 系にも対応したいと思います。