[ここをクリックすると内容が表示されます]
件名の通り 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 系にも対応したいと思います。