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

开发 后端
大家都知道,VB.NET在对移动设备的处理方面展现了非常大的优势,可以轻松的帮助开发人员获取硬盘信息,改变显示器分辨率等等。那么今天我们就会对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 

【编辑推荐】

  1. VB.NET删除空白行具体实现方法详解
  2. VB.NET连接远程数据库技巧分享
  3. VB.NET播放WAV实现方法介绍
  4. VB.NET嵌入文件操作技巧分享
  5. 深入分析VB.NET FieldOffset特性
责任编辑:曹凯 来源: CSDN
相关推荐

2010-01-11 13:33:07

VB.NET使用数组

2010-01-08 18:16:52

VB.NET变量

2010-01-14 13:59:01

2021-11-11 16:46:02

CPU使用率 .NET

2010-01-11 16:04:10

VB.NET使用wit

2010-01-18 19:36:52

VB.NET调整控件

2009-10-27 14:50:25

VB.NET控件数组

2009-11-10 13:43:28

VB.NET Comm

2009-11-02 13:54:27

VB.NET shel

2010-01-18 18:20:49

VB.NET使用API

2009-10-28 16:47:26

VB.NET访问数据库

2009-11-02 17:54:44

VB.NET数组

2009-11-02 15:49:23

VB.NET显示系统信

2009-10-21 09:40:23

VB.NET搜索

2010-01-11 10:08:47

VB.NET事件通道

2009-10-29 14:16:32

VB.NET读写文本文

2009-10-29 09:06:26

VB.NET Web

2009-10-09 16:11:33

VB.NET语法

2009-11-10 11:04:09

VB.NET数据类型

2023-03-06 08:41:32

CPU使用率排查
点赞
收藏

51CTO技术栈公众号