|
CPUの使用率を表示するサンプル(VB6)

|
<このサンプルの概要>
CPUの使用率を表示するサンプルソースを作ってみました。
CPU使用率はCPUのアイドル率を取得して100から引く方法で求めています。
VB6のフォームにTimerを1つ、PictureBoxを2つ、Labelを1つ貼り付けてお試しください。
本サンプルのキーワードは以下のAPIです。
(1)PdhOpenQuery
(2)PdhAddCounter
(3)PdhCollectQueryData
(4)PdhGetDoubleCounterValue
(5)PdhCloseQuery
CPU使用率を表示する他のサンプルがありますので紹介します。
プロセス毎のCPU使用率を表示するサンプル(VB.NET)
CPU使用率を表示する関連ツールがありますので紹介します。
パフォーマンス表示SCRはプロセス毎のCPU使用率を表示するスクリーンセーバーです。
超ミニCPUメーターは最小限の機能、最小限のサイズでCPU使用率を表示します。
★フォームモジュール(Form1.frm)
' Timerを1つ、PictureBoxを2つ、Labelを1つ、
' Formに貼り付けてお試しください。
Private Declare Function PdhOpenQuery Lib "pdh" Alias "PdhVbOpenQuery" (ByRef QueryHandle As Long) As Long
Private Declare Function PdhAddCounter Lib "pdh" Alias "PdhVbAddCounter" (ByVal QueryHandle As Long, ByVal CounterPath As String, ByRef CounterHandle As Long) As Long
Private Declare Function PdhCollectQueryData Lib "pdh" (ByVal QueryHandle As Long) As Long
Private Declare Function PdhGetDoubleCounterValue Lib "pdh" Alias "PdhVbGetDoubleCounterValue" (ByVal CounterHandle As Long, ByRef CounterStatus As Long) As Double
Private Declare Function PdhCloseQuery Lib "pdh" (ByVal QueryHandle As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private hQuery As Long
Private hCounter As Long
Private lCounter As Long
Private dCpuIdle As Double
Private Sub Form_Load()
' Timerの設定
Timer1.Interval = 1000
Timer1.Enabled = True
' PictureBoxの設定
Picture2.Left = Picture1.Left
Picture2.Top = Picture1.Top
Picture2.Width = Picture1.Width
Picture2.Height = Picture1.Height
Picture2.BackColor = "&H80000002"
Picture2.ZOrder
' パフォーマンスデータのクエリーのオープン
PdhOpenQuery hQuery
' パフォーマンスカウンタの追加(CPUのアイドル率を取得)
PdhAddCounter hQuery, "\Process(Idle#0)\% Processor Time", hCounter
' パフォーマンスデータの収集
PdhCollectQueryData hQuery
' 初期値の収集
DoEvents
Sleep 100
Timer1_Timer
End Sub
Private Sub Form_Unload(Cancel As Integer)
' パフォーマンスデータのクエリーのクローズ
PdhCloseQuery hQuery
End Sub
Private Sub Timer1_Timer()
' パフォーマンスデータの収集
PdhCollectQueryData hQuery
' パフォーマンスカウンタの値取得
dCpuIdle = PdhGetDoubleCounterValue(hCounter, lCounter)
If dCpuIdle > 100 Then dCpuIdle = 100
' CPU使用率(100-dCpuIdle)を計算しLabelに表示
Label1.Caption = CInt(100 - dCpuIdle) & "%"
' PictureBoxを2つ重ねてCPU使用率のレベルメータ表示
If Val(Label1.Caption) > 0 Then
Picture2.Width = Picture1.Width * CInt(100 - dCpuIdle) / 100
Picture2.BackColor = "&H80000002"
Else
Picture2.BackColor = Picture1.BackColor
End If
End Sub