如何得知 CPU 使用率

如何得知 CPU 使用率

透過程式取得 CPU 使用率

PH Info Pic 1

<< VB.Net 使用 PerformanceCounter 的寫法 >>

Imports System.Diagnostics ' 匯入System.Diagnostics 命名空間

Public Class Form1

' 宣告並建立"效能計數器元件" 類別

' New PerformanceCounter(CategoryName,CounterName,InstanceName)

Private PfmcCounter As New PerformanceCounter("Processor", "% Processor Time", "_Total")

' CategoryName : 取得或設定這個效能計數器的效能計數器分類的名稱。

' CounterName : 取得或設定與這個PerformanceCounter 執行個體相關的效能計數器的名稱。

' InstanceName : 取得或設定這個效能計數器的執行個體名稱。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Timer1.Interval = 900 ' Timer.Interval 屬性: 取得或設定引發Elapsed 事件的間隔。

Timer1.Enabled = True ' 啟動Timer

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

' PerformanceCounter.NextValue 方法: 取得計數器樣本,並為其傳回計算過的值。

Label1.Text = PfmcCounter.NextValue.ToString & " %"

End Sub

End Class

================================================================

<< VB.Net 使用 WMI 的寫法 >>

Dim objWMI As Object

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Timer1.Interval = 500

Timer1.Enabled = True

objWMI = GetObject("winmgmts:")

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ' Timer 事件

CPU_Usage()

End Sub

Private Sub CPU_Usage() ' 用 WMI 取得 CPU 使用率

Dim strCls, strCPU As String

strCls = "Win32_Processor" ' WMI 類別

strCPU = "CPU0" ' 當有多顆 CPU 時 , 可調整為 CPU1 , CPU2 .. 依此類推

Debug.WriteLine(objWMI.InstancesOf(strCls)(strCls & ".DeviceID=""" & strCPU & """").LoadPercentage) ' 取得使用率

End Sub

================================================================

VB6 寫法 :

Dim objWMI As Object

Private Sub Form_Load()

Timer1.Interval = 500

Timer1.Enabled = True

Set objWMI = GetObject("winmgmts:")

End Sub

Private Sub Timer1_Timer() ' Timer 事件

CPU_Usage

End Sub

Private Sub CPU_Usage() ' 用 WMI 取得 CPU 使用率

Dim strCls As String, strCPU As String

strCls = "Win32_Processor" ' WMI 類別

strCPU = "CPU0" ' 當有多顆 CPU 時 , 可調整為 CPU1 , CPU2 .. 依此類推

Debug.Print objWMI.InstancesOf(strCls)(strCls & ".DeviceID=""" & strCPU & """").LoadPercentage ' 取得使用率

End Sub

================================================================

另外在WinNT , Win2K , WinXP , Win 2003 … 作業系統中,也可 Call API 來取得 CPU 使用率

Private Declare Function NtQuerySystemInformation Lib "ntdll" _

(ByVal dwInfoType As Long, ByVal lpStructure As Long, _

ByVal dwSize As Long, ByVal dwReserved As Long) As Long

Win98 則可透過登錄檔讀取來取取 CPU 使用率

HKEY_DYN_DATA\PerfStats\StartStat\KERNEL\CPUusage