亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦硬件知識(shí) > CPU知識(shí) > 怎么獲取CPU的溫度

      怎么獲取CPU的溫度

      時(shí)間: 沈迪豪908 分享

      怎么獲取CPU的溫度

      你知道如何獲取CPU的溫度嗎?跟著學(xué)習(xí)啦小編一起學(xué)習(xí)獲取CPU的溫度的方法吧。

        作為一個(gè)系統(tǒng)級(jí)程序員或者編程愛好者,掌握一些系統(tǒng)的高級(jí)編程技巧是非常有意義的。本文將介紹如何利用一些高級(jí)的編程技巧來實(shí)現(xiàn)動(dòng)態(tài)監(jiān)控。

        雖然Windows 98“系統(tǒng)工具”中的“資源狀況”程序能夠監(jiān)視CPU的資源占用狀況,但是那些相關(guān)的數(shù)據(jù)卻無法傳遞到我們自己的程序中。為此,筆者用VB 6編寫了一個(gè)具有上述功能的CPU監(jiān)視軟件,它可以實(shí)現(xiàn)對(duì)CPU資源狀況的監(jiān)視并取得有關(guān)數(shù)據(jù),并且能夠顯示到一個(gè)精致的圖示窗口中。

        編程原理

        CPU的資源占用情況真正反映在CMOS中,但是如果我們直接從這里開始編程,那將是一件非常復(fù)雜的工作。幸好,Windows 98已經(jīng)幫我們做好了這一步,它的底層技術(shù)能夠從CMOS中獲取CPU的資源占用狀況參數(shù)并且記錄到注冊(cè)表中“HKEY_DYN_DATA\PerfStats\StatData”的分支“KERNEL\CPUUsage”中,通過周期性地讀取該鍵的鍵值,并且將參數(shù)傳遞到我們自己制作的監(jiān)視器界面或者有關(guān)變量中,就可以即時(shí)獲得并反映出CPU的使用狀況了。

        本程序的關(guān)鍵是以通用的方法獲取相關(guān)鍵值并反映輸出到自制的動(dòng)態(tài)進(jìn)度監(jiān)視器上,為了更有利于觀察、分析,我們將添加一個(gè)簡(jiǎn)單的趨勢(shì)分析平均線。通過本文,初學(xué)者還將能了解如何從注冊(cè)表的指定項(xiàng)獲取數(shù)據(jù)和利用Picture控件實(shí)現(xiàn)進(jìn)度指示器的編程技巧。

        獲取CPU的溫度的方法

        1.設(shè)計(jì)程序界面

        首先運(yùn)行VB 6中文版,建立一個(gè)標(biāo)準(zhǔn)的exe工程,將窗體命名為frmmain,borderstyle屬性設(shè)為:3-fixed,caption,屬性設(shè)置為空;接著添加一個(gè)frame控件——“frame1”,caption屬性設(shè)置為空,再添加picturebox控件pctPrg,前景色為綠色,背景色為淺紅色;最后添加一個(gè)定時(shí)器控件——“timer”,interval設(shè)置為100(當(dāng)然,也可以根據(jù)自己的需要設(shè)置讀取間隔),enabled設(shè)置為true,其他的屬性采用系統(tǒng)的默認(rèn)值,調(diào)整窗體和控件到適當(dāng)位置和適當(dāng)大小即可(參見附圖)。

        2.編寫程序代碼,雙擊窗體frmmain并輸入以下代碼

        Option Explicit '變量檢查

        Private Declare Function RegQueryValueEx Lib "advapi32.dll " Alias "RegQueryValueExA " (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

        '獲取一個(gè)指定的注冊(cè)表項(xiàng)的設(shè)置值

        Private Declare Function RegOpenKey Lib "advapi32.dll " Alias "RegOpenKeyA " (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

        '打開一個(gè)指定的的注冊(cè)表項(xiàng)

        Private Declare Function RegCloseKey Lib "advapi32.dll " (ByVal hKey As Long) As Long

        '關(guān)閉系統(tǒng)注冊(cè)表中的指定項(xiàng)(或指定鍵)

        Private Const REG_DWORD = 4

        Private Const HKEY_DYN_DATA = &&H80000006

        '這兩個(gè)常數(shù)是讀寫注冊(cè)表必須的

        '以上API函數(shù)和常數(shù)結(jié)合能夠?qū)崿F(xiàn)對(duì)注冊(cè)表任意指定項(xiàng)的訪問

        Private Avg As Long

        'CPU 資源占用參數(shù)平均數(shù)

        Private Sum As Long

        'CPU 資源占用參數(shù)合計(jì)數(shù)

        Private Index As Long '統(tǒng)計(jì)次數(shù)

        '窗體級(jí)函數(shù)、常數(shù)和變量聲明結(jié)束

        Private Function GetCPUUsage() As Long

        On Error Resume Next

        '忽略可能產(chǎn)生的錯(cuò)誤

        Dim Data As Long, Typ As Long, Size As Long

        Dim hKey As Long

        Dim hRet As Long

        hRet = RegOpenKey(HKEY_DYN_DATA, "PerfStats\StatData ", hKey)

        '打開該主鍵

        hRet = RegQueryValueEx(hKey, "KERNEL\CPUUsage ", 0&&, REG_DWORD, Data, 4)

        '讀取主鍵值

        GetCPUUsage = Data

        ' 為自定義函數(shù)賦值

        hRet = RegCloseKey(hKey)

        '關(guān)閉該主鍵

        End Function

        Private Sub Form_Load()

        '初始化標(biāo)題和提示信息

        Dim hKey As Long, Data As Long

        App.Title = "CPU監(jiān)視器 占有率: "

        Me.Caption = App.Title

        '初始化應(yīng)用程序標(biāo)題欄

        pctPrg.ToolTipText = "單擊右鍵退出程序! "

        RegOpenKey HKEY_DYN_DATA, "PerfStats\ StartStat ", hKey

        RegQueryValueEx hKey, "KERNEL\CPUUsage ", 0, REG_DWORD, Data, 4

        RegCloseKey hKey

        '打開注冊(cè)表的資源監(jiān)控標(biāo)識(shí)

        End Sub

        Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

        '程序結(jié)束前關(guān)閉定時(shí)器

        Timer.Enabled = False

        End Sub

        Private Sub Form_Unload(Cancel As Integer)

        End '結(jié)束程序

        End Sub

        Private Sub pctPrg_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

        '右鍵單擊退出程序

        If Button = 2 Then

        Unload Me

        End If

        End Sub

        Private Sub Timer_Timer()

        '利用定時(shí)器周期性地讀取資源狀況

        '本程序每隔0.1秒讀取一次數(shù)據(jù)

        Dim tmp As Long ' CPU資源占用狀況參數(shù)

        tmp = GetCPUUsage '獲得參數(shù)

        Me.Caption = App.Title && FormatPercent(tmp / 100) '

        '在窗體標(biāo)題欄用百分比數(shù)字形式反映占用率

        Sum = Sum + tmp '累加統(tǒng)計(jì)

        Index = Index + 1 '次數(shù)統(tǒng)計(jì)

        Avg = Int(Sum / Index) ' 求平均值

        pctPrg.Cls ' 清除圖示內(nèi)容

        pctPrg.Line (0, 0)-(tmp, 18), ,&& BF

        '以綠色圖示資源占用狀況

        pctPrg.Line (Avg, 0)-(Avg, 18), &&HFF

        '以深紅色畫出平均線

        pctPrg.Line (Avg + 1, 0)-(Avg + 1, 18), &&HFF

        End Sub

        '程序結(jié)束

        通過以上步驟,裝備精良的CPU監(jiān)視器就制作完成了。

        注意事項(xiàng)

        需要說明的是,在內(nèi)存配置較低的計(jì)算機(jī)中(比如內(nèi)存32MB,Windows 98第二版),CPU的占有率是較高的,一般能夠達(dá)到50%,這可能是由于系統(tǒng)需要CPU進(jìn)行許多的運(yùn)算模擬來彌補(bǔ)資源的不足。然而在88MB內(nèi)存,同樣操作系統(tǒng)的機(jī)器上,占有率一般只有10%。另外,本文主窗體中定時(shí)器運(yùn)行過程函數(shù)中調(diào)用的FormatPercent函數(shù)是VB 6.0新添加的一個(gè)函數(shù),它的作用是將一個(gè)表達(dá)式轉(zhuǎn)化成百分?jǐn)?shù)。用VB 5.0開發(fā)的讀者需要采取其他變通方法,以實(shí)現(xiàn)監(jiān)控CPU功能。本程序在Windows 98第二版、VB 6.0中文企業(yè)版下測(cè)試通過。

      怎么獲取CPU的溫度相關(guān)文章:

      1.怎么看cpu的溫度

      2.在線查看cpu溫度

      3.如何查看cpu溫度

      4.臺(tái)式機(jī)溫度如何檢測(cè)

      5.怎么利用BIOS查看主機(jī)內(nèi)的溫度

      6.檢測(cè)CPU溫度的方法

      2018888