Puoi usare i PerformanceCounter:
http://msdn.microsoft.com/it-it/library/system.diagnostics.performancecounter(v=vs.110).aspx
Lo trovi nella casella degli strumenti.
Io ho un dual core quindi l' esempio mostra il totale e i due core. Alla form aggiungi un Timer e 3 Label:
Imports System.Diagnostics
Public Class Form1
Dim PFMC_totale As New PerformanceCounter
Dim PFMC_core1 As New PerformanceCounter
Dim PFMC_core2 As New PerformanceCounter
Private Sub Form1_Load() Handles MyBase.Load
Me.TopMost = True
Timer1.Interval = 1000
With PFMC_totale
.CategoryName = "Processore"
.CounterName = "% tempo processore"
.InstanceName = "_total"
End With
With PFMC_core1
.CategoryName = "Processore"
.CounterName = "% tempo processore"
.InstanceName = "0"
End With
With PFMC_core2
.CategoryName = "processore"
.CounterName = "% tempo processore"
.InstanceName = "1"
End With
Timer1.Start()
End Sub
Private Sub Timer1_Tick() Handles Timer1.Tick
Label1.Text = "Totale: " & System.Math.Round(PFMC_totale.NextValue, 0) & "%"
Label2.Text = "Core 1: " & System.Math.Round(PFMC_core1.NextValue, 0) & "%"
Label3.Text = "Core 2: " & System.Math.Round(PFMC_core2.NextValue, 0) & "%"
End Sub
End Class
Per la temperatura come hai fatto?