总所周知,个人计算机会在CPU温度过高时自动断电保护,要实现这一功能首先就是要是取得CPU的核心温度。在主板的BIOS中有一项可以查看CPU核心的温度。我想通过VB6.0编写程序读取它。我尝试过网上提供的一些方法,比如:
VB codePublic Function GetCPUTemp() As Double
Dim i As Integer
Dim mCPU As Variant
Dim u As Variant
Dim s As String
Set mCPU = GetObject("WINMGMTS:{impersonationLevel=impersonate}!root\wmi").ExecQuery("SELECT CurrentTemperature From MSAcpi_ThermalZoneTemperature")
For Each u In mCPU
s = s & u.CurrentTemperature
Next
Set mCPU = Nothing
GetCPUTemp = (s - 2732) / 10
End Function
这是网上比较多出现的代码,能读出温度值,但是是一个恒定不变的(AMD的CPU是40.0℃),这其实是一个错误的值。有高手说,要读取正确的值需要主板支持,但为什么像“Z武器”这样的工具却能在任何一台电脑上实现CPU温度的读取呢?
我想实现真正的能正确读取CPU温度值的功能!请高手不吝赐教!小弟倒地拜谢先!!
看到这代码就知道他恒定不动了,你最少要用一个刷新(如时钟控件,每一秒刷新一次(读取一次CPU温度就行))
Private Sub Timer1_Timer()
Debug.Print GetCPUTemp
End Sub
你的程序放入定时器,在我机子上温度的确有变化,不过属于跨度比较大才有变化值的一种。
不能实时串跟踪的缓慢变化。
cpu温度可以在pmu里读到,端口是68h、6ch,你需要一个pmu的说明,看明白了很简单的。
应该说PMU才是关键。。。。。