|
|||||
<このサンプルの概要> CPUの使用率を表示するサンプルソースを作ってみました。 CPU使用率はCPUのアイドル率を取得して100から引く方法で求めています。 VB6のフォームにTimerを1つ、PictureBoxを2つ、Labelを1つ貼り付けてお試しください。 本サンプルのキーワードは以下のAPIです。 (1)PdhOpenQuery (2)PdhAddCounter (3)PdhCollectQueryData (4)PdhGetDoubleCounterValue (5)PdhCloseQuery ちなみに、このサンプルで取得出来るCPUアイドル率は全てのコアの合計です。 複数のコアが存在する場合はコア数で割って平均を求める必要があります。 コア数はGetSystemInfoを使用しSYSTEM_INFOのdwNumberOfProcessorsで取得出来ます。 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 |