快速掌握VB.NET获取CPU使用率技巧

大家通过对VB.NET语言的学习,会慢慢的被这款语言强大的功能所吸引住。作为一款完全面向对象的语言,为开发人员带来了很多的好处。比如在处理移动设备方面,就极大的体现了它的作用。在这里我们就先来了解一下VB.NET获取CPU使用率的相关应用技巧。

API声明

 
 
 
  1. Public Declare Function PdhVbGetOneCounterPath 
    Lib "PDH.DLL" (ByVal PathString As String,
     ByVal PathLength As Integer, ByVal DetailLevel 
    As Integer, ByVal CaptionString As String)As Integer  
  2. Public Declare Function PdhVbCreateCounterPathList 
    Lib "PDH.DLL" (ByVal PERF_DETAIL As Integer, 
    ByVal CaptionString As String) As Integer  
  3. Public Declare Function PdhVbGetCounterPathFromList 
    Lib "PDH.DLL" (ByVal Index As Integer, ByVal Buffer 
    As String, ByVal BufferLength As Integer) As Integer  
  4. Public Declare Function PdhOpenQuery Lib "PDH.DLL" 
    (ByVal Reserved As Integer, ByVal dwUserData As 
    Integer, ByRef hQuery As Integer) As PDH_STATUS  
  5. Public Declare Function PdhCloseQuery Lib "PDH.DLL" 
    (ByVal hQuery As Integer) As PDH_STATUS  
  6. Public Declare Function PdhVbAddCounter Lib "PDH.DLL" 
    (ByVal QueryHandle As Integer, ByVal CounterPath As 
    String, ByRef CounterHandle As Integer) As PDH_STATUS  
  7. Public Declare Function PdhCollectQueryData Lib 
    "PDH.DLL" (ByVal QueryHandle As Integer) As PDH_STATUS  
  8. Public Declare Function PdhVbIsGoodStatus Lib "PDH.DLL" 
    (ByVal StatusValue As Integer) As Integer  
  9. Public Declare Function PdhVbGetDoubleCounterValue Lib 
    "PDH.DLL" (ByVal CounterHandle As Integer, ByRef 
    CounterStatus As Integer) As Double 

枚举常数

 
 
 
  1. Enum PERF_DETAIL  
  2. PERF_DETAIL_NOVICE = 100 
  3. PERF_DETAIL_ADVANCED = 200 
  4. PERF_DETAIL_EXPERT = 300 
  5. PERF_DETAIL_WIZARD = 400 
  6. End Enum  
  7. Enum PDH_STATUS  
  8. PDH_CSTATUS_VALID_DATA = &H0S  
  9. PDH_CSTATUS_NEW_DATA = &H1S  
  10. PDH_CSTATUS_NO_MACHINE = &H800007D0  
  11. PDH_CSTATUS_NO_INSTANCE = &H800007D1  
  12. PDH_MORE_DATA = &H800007D2  
  13. PDH_CSTATUS_ITEM_NOT_VALIDATED = &H800007D3  
  14. PDH_RETRY = &H800007D4  
  15. PDH_NO_DATA = &H800007D5  
  16. PDH_CALC_NEGATIVE_DENOMINATOR = &H800007D6  
  17. PDH_CALC_NEGATIVE_TIMEBASE = &H800007D7  
  18. PDH_CALC_NEGATIVE_VALUE = &H800007D8  
  19. PDH_DIALOG_CANCELLED = &H800007D9  
  20. PDH_CSTATUS_NO_OBJECT = &HC0000BB8  
  21. PDH_CSTATUS_NO_COUNTER = &HC0000BB9  
  22. PDH_CSTATUS_INVALID_DATA = &HC0000BBA  
  23. PDH_MEMORY_ALLOCATION_FAILURE = &HC0000BBB  
  24. PDH_INVALID_HANDLE = &HC0000BBC  
  25. PDH_INVALID_ARGUMENT = &HC0000BBD  
  26. PDH_FUNCTION_NOT_FOUND = &HC0000BBE  
  27. PDH_CSTATUS_NO_COUNTERNAME = &HC0000BBF  
  28. PDH_CSTATUS_BAD_COUNTERNAME = &HC0000BC0  
  29. PDH_INVALID_BUFFER = &HC0000BC1  
  30. PDH_INSUFFICIENT_BUFFER = &HC0000BC2  
  31. PDH_CANNOT_CONNECT_MACHINE = &HC0000BC3  
  32. PDH_INVALID_PATH = &HC0000BC4  
  33. PDH_INVALID_INSTANCE = &HC0000BC5  
  34. PDH_INVALID_DATA = &HC0000BC6  
  35. PDH_NO_DIALOG_DATA = &HC0000BC7  
  36. PDH_CANNOT_READ_NAME_STRINGS = &HC0000BC8  
  37. End Enum  
  38. Public Const ERROR_SUCCESS As Short = 0 
  39. Public Structure CounterInfo  
  40. Dim hCounter As Integer  
  41. Dim strName As String  
  42. End Structure 

在窗体的load事件里面添加一下语句:

 
 
 
  1. Dim pdhStatus As PDH_STATUS  
  2. pdhStatus = PdhOpenQuery
    (0, 1, hQuery)  
  3. If pdhStatus <> 
    ERROR_SUCCESS Then  
  4. MsgBox("OpenQuery failed")  
  5. End  
  6. End If 

在窗体的closed事件里面添加以下代码

 
 
 
  1. PdhCloseQuery(hQuery) 

VB.NET获取CPU使用率之显示利用率信息

 
 
 
  1. Private Sub UpdateValues()  
  2. Dim dblCounterValue As Double  
  3. Dim pdhStatus As Integer  
  4. Dim strInfo As String  
  5. Dim i As Integer  
  6. PdhCollectQueryData(hQuery)  
  7. i = 0 
  8. dblCounterValue = 
    PdhVbGetDoubleCounterValue
    (Counters(i).hCounter, pdhStatus) 

将VB.NET获取CPU使用率显示在标签中

 
 
 
  1. If (pdhStatus = PDH_STATUS.
    PDH_CSTATUS_VALID_DATA) or 
    (pdhStatus = PDH_STATUS.PDH_
    CSTATUS_NEW_DATA) Then  
  2. strInfo = "CPU 使用率: " & 
    VB6.Format(dblCounterValue, "0.00")  
  3. pb1.Value = dblCounterValue 
  4. Me.Text = VB6.Format(dblCounterValue,
     "0") & "% - CPU 当前状态"  
  5. End If  
  6. Label1.Text = strInfo 
  7. End Sub 

新闻名称:快速掌握VB.NET获取CPU使用率技巧
转载注明:http://www.mswzjz.cn/qtweb/news46/463896.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能