NonSoft

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


 サンプル(ソース/コード)
<このサンプルの概要>
プロセス毎のCPU使用率を取得(表示)するサンプル(VB.NET)です。タスクマネージャーのような
カッコイイものでは無く、Debug.Printでプロセス名(タスク名)とCPU使用率を表示します。
CPU使用率と言ってもIdleプロセスのCPU使用率はCPUアイドル(空き=未使用)率です。

ポイントとなるキーワードは以下の通りです。
(1)PerformanceCounter.CategoryName
(2)PerformanceCounter.CounterName
(3)PerformanceCounter.InstanceName
(4)PerformanceCounter.NextValue

サンプルとしてタスクマネージャーのCPU使用率を表示していますので、予め起動しておいてください。

CPU使用率を表示する他のサンプルと関連サンプルがありますので紹介します。
プロセス毎のCPU使用率を表示するサンプル(C#.NET)
プロセス一覧と子プロセスの起動/終了のサンプル(VB6)
CPUの使用率を表示するサンプル(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