|
プロセス毎のCPU使用率を表示するサンプル(VB.NET)

|
<このサンプルの概要>
プロセス毎のCPU使用率を取得(表示)するサンプルです。タスクマネージャーのようなカッコイイもの
では無く、Debug.Printでプロセス名(タスク名)とCPU使用率を表示します。CPU使用率と言ってもIdle
プロセスのCPU使用率はCPUアイドル(空き=未使用)率です。
ポイントとなるキーワードは以下の通りです。
(1)PerformanceCounter.CategoryName
(2)PerformanceCounter.CounterName
(3)PerformanceCounter.InstanceName
(4)PerformanceCounter.NextValue
サンプルとしてタスクマネージャーのCPU使用率を表示していますので、予め起動しておいてください。
CPU使用率を表示する他のサンプルと関連サンプルがありますので紹介します。
CPUの使用率を表示するサンプル(VB6)
プロセス一覧と子プロセスの起動/終了のサンプル(VB6)
CPU使用率を表示する関連ツールがありますので紹介します。
プロセスLOG出力&表示ツールはプロセス毎のCPU使用率を定期的に記録するツールです。
パフォーマンス表示SCRはプロセス毎のCPU使用率を表示するスクリーンセーバーです。
超ミニCPUメーターは最小限の機能、最小限のサイズでCPU使用率を表示します。
★フォームモジュール(Form1.vb)
Public Class Form1
''' <summary>
''' パフォーマンスカウンタを配列で定義(CPU使用率取得用)
''' </summary>
''' <remarks></remarks>
Private PerCnts As PerformanceCounter() = New PerformanceCounter(2) {}
''' <summary>
''' フォームロード
''' </summary>
''' <param name="sender">sender</param>
''' <param name="e">e</param>
''' <remarks>フォームロード時にパフォーマンスカウンタを初期設定する</remarks>
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' IdleプロセスのCPU使用率
PerCnts(0) = New PerformanceCounter
PerCnts(0).CategoryName = "Process"
PerCnts(0).CounterName = "% Processor Time"
PerCnts(0).InstanceName = "idle"
PerCnts(0).NextValue()
' taskmgrプロセスのCPU使用率
PerCnts(1) = New PerformanceCounter
PerCnts(1).CategoryName = "Process"
PerCnts(1).CounterName = "% Processor Time"
PerCnts(1).InstanceName = "taskmgr"
PerCnts(1).NextValue()
' devenvプロセスのCPU使用率
PerCnts(2) = New PerformanceCounter
PerCnts(2).CategoryName = "Process"
PerCnts(2).CounterName = "% Processor Time"
PerCnts(2).InstanceName = "devenv"
PerCnts(2).NextValue()
End Sub
''' <summary>
''' プロセス毎のCPU使用率を表示するタイマー
''' </summary>
''' <param name="sender">sender</param>
''' <param name="e">e</param>
''' <remarks>各プロセスのCPU使用率を表示する</remarks>
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' 各プロセス毎にCPU使用率を取得するループ
For i As Integer = 0 To UBound(PerCnts)
Try
' 各プロセスのCPU使用率を表示
Debug.Print(PerCnts(i).InstanceName & "," & Val(PerCnts(i).NextValue()))
Catch ex As Exception
End Try
Next
End Sub
End Class