找回密码
 加入
搜索
查看: 4912|回复: 6

用WMI不能获取CPU的温度,求解决

  [复制链接]
发表于 2014-5-26 15:23:32 | 显示全部楼层 |阅读模式
用WMI可以获取硬盘温度,但是显示CPU温度为空,我用的是Win 7系统,Autoit版本3.3.7。有大神指点下这是为什么,怎么解决啊。。。
 
 MsgBox(0,'',_ACPI_Temp())
 MsgBox(0,'',_WMI_DriveTemperature())
 Func _ACPI_Temp() ;CPU Temp
    Local $wbemFlagReturnImmediately = 0x10, $strComputer, $objWMIService, $colItems, $CurrTemp
    Local $wbemFlagForwardOnly = 0x20
    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\wmi")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    For $objItem In $colItems
           $CurrTemp = ($objItem.CurrentTemperature - 2732) / 10
         Next
   Return $CurrTemp
EndFunc
Func _WMI_DriveTemperature() ; Hard Drive temp
   Local $wbemFlagReturnImmediately = 0x10, $objWMIService, $colItems, $colTemp , $strComputer, $objItem, $s
   Local $wbemFlagForwardOnly = 0x20
   Local $strVendorSpecific 
   $strComputer = "."
    $objWMIService = ObjGet("winmgmts:\" & $strComputer & "\root\wmi")
        $colTemp = $objWMIService.ExecQuery('SELECT * FROM MSStorageDriver_ATAPISmartData', "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
        For $objItem In $colTemp
                   $strVendorSpecific = $objItem.VendorSpecific
           For $i = 2 To UBound($strVendorSpecific) - 1 Step 12
            If $strVendorSpecific[$i] = 0xC2 Then ; find Vendor Parameter #194 - Temperatur
                $s &= " " & $strVendorSpecific[$i + 5] ; Raw/Value celsuis
                ContinueLoop 2
            EndIf
        Next
        For $i = 2 To UBound($strVendorSpecific) - 1 Step 12
            If $strVendorSpecific[$i] = 0xBE Then ; find Vendor Parameter #190 - Airflow Temperatur (if no tempetature is found)
                $s &= " " & $strVendorSpecific[$i + 5] ; Raw/Value celsuis
                ContinueLoop 2
            EndIf
       Next
                If $s = 0 or $s = "N/A" or $s = "" or $s = @error then  
            $s = $strVendorSpecific[127]
            Endif
                   
            Next
Return $s
EndFunc  
发表于 2014-5-26 20:10:43 | 显示全部楼层
回复 1# zxhou1

加 #RequireAdmin 试试
发表于 2014-5-26 21:51:33 | 显示全部楼层
呵呵!顶
 楼主| 发表于 2014-5-27 08:55:02 | 显示全部楼层
回复 2# lixiaolong
不行啊,我在xp系统运行都没问题的,win7就不行了
 楼主| 发表于 2014-5-29 13:40:58 | 显示全部楼层
求解决啊,大神
发表于 2024-10-28 21:39:05 | 显示全部楼层
学习一下如何操作
发表于 2024-10-28 22:09:37 | 显示全部楼层
谢分享,学习下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 00:15 , Processed in 0.079320 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表