ab.com コミュニティ https://www.activebasic.com/forum/ |
|
CPU 使用率の取得サンプル (2000 / XP) https://www.activebasic.com/forum/viewtopic.php?t=516 |
ページ 1 / 1 |
作成者: | Toshi [ 2005年12月01日(木) 22:36 ] |
記事の件名: | CPU 使用率の取得サンプル (2000 / XP) |
1 秒毎に CPU 使用率を取得します。 [ここをクリックすると内容が表示されます]
件名の通り 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 系にも対応したいと思います。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |