|
|||||
<このサンプルの概要> 以下のWin32Apiを使用したサンプルソースです。 (1)PdhOpenQuery (2)PdhAddCounter (3)PdhCollectQueryData (4)PdhGetDoubleCounterValue (5)PdhCloseQuery VB.NETでApiを宣言(Declare)する場合はVB.NET用に変換する必要があります。 変換方法のサンプルはこちらです。VB6とVB.NETのAPI宣言(Declare)の違いを比較したサンプル C#.NETでApiを宣言(Declare)する場合はC#.NET用に変換する必要があります。 変換方法のサンプルはこちらです。VB6とC#.NETのAPI宣言(Declare)の違いを比較したサンプル その他のサンプルソースはこちらです。 Win32Api定義のサンプル サンプルソース ' 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) ' CPU使用率(100-dCpuIdle)を計算しLabelに表示 Label1.Caption = Int(100 - dCpuIdle) & "%" ' PictureBoxを2つ重ねてCPU使用率のレベルメータ表示 If Val(Label1.Caption) > 0 Then Picture2.Width = Picture1.Width * Int(100 - dCpuIdle) / 100 Picture2.BackColor = "&H80000002" Else Picture2.BackColor = Picture1.BackColor End If End Sub |