Vb.net 查找特定进程的内存使用情况
我正在用VisualBasic2010开发一个应用程序,用于查找特定进程的内存使用情况。我遇到了以下代码:Vb.net 查找特定进程的内存使用情况,vb.net,visual-studio-2010,memory,Vb.net,Visual Studio 2010,Memory,我正在用VisualBasic2010开发一个应用程序,用于查找特定进程的内存使用情况。我遇到了以下代码: Option Explicit Private Sub Command1_Click() Debug.Print GetProcessMemory("vb6.exe") End Sub Private Function GetProcessMemory(ByVal app_name As String) As String Dim Process As
Option Explicit
Private Sub Command1_Click()
Debug.Print GetProcessMemory("vb6.exe")
End Sub
Private Function GetProcessMemory(ByVal app_name As String) As String
Dim Process As Object
Dim dMemory As Double
For Each Process In GetObject("winmgmts:").ExecQuery("Select WorkingSetSize from Win32_Process Where Name = '" & app_name & "'")
dMemory = Process.WorkingSetSize
Next
If dMemory > 0 Then
GetProcessMemory = ResizeKb(dMemory)
Else
GetProcessMemory = "0 Bytes"
End If
End Function
Private Function ResizeKb(ByVal b As Double) As String
Dim bSize(8) As String, i As Integer
bSize(0) = "Bytes"
bSize(1) = "KB" 'Kilobytes
bSize(2) = "MB" 'Megabytes
bSize(3) = "GB" 'Gigabytes
bSize(4) = "TB" 'Terabytes
bSize(5) = "PB" 'Petabytes
bSize(6) = "EB" 'Exabytes
bSize(7) = "ZB" 'Zettabytes
bSize(8) = "YB" 'Yottabytes
For i = UBound(bSize) To 0 Step -1
If b >= (1024 ^ i) Then
ResizeKb = ThreeNonZeroDigits(b / (1024 ^ _
i)) & " " & bSize(i)
Exit For
End If
Next
End Function
Private Function ThreeNonZeroDigits(ByVal value As Double) As Double
If value >= 100 Then
ThreeNonZeroDigits = FormatNumber(value)
ElseIf value >= 10 Then
ThreeNonZeroDigits = FormatNumber(value, 1)
Else
ThreeNonZeroDigits = FormatNumber(value, 2)
End If
End Function
但这在vb2010中不起作用。它返回0字节。请帮忙。您还希望使用其他技术。您如何准确调用
GetProcessMemory
?当您在调试器中单步执行它时,它是否真的为每个循环执行中的任何内容?您自己尝试过做些什么来调试它?无论它是在vb2010
中运行,还是在另一个版本的vb.net中运行,都没有什么重要的东西。另外,请不要在标题中添加标签信息。这里的标签系统非常擅长分类,不需要帮助。:-)请看。谢谢。@KenWhite我正在将进程的名称作为输入传递给GetProcessMemory。这是我问你的问题的三分之一。:-)另外两个呢?@KenWhite不,没有。我试图在列表框中显示dMemory的值,就在dMemory=Process.WorkingSetSize行之后,但它没有显示任何结果。我在博客的某个地方找到了这段代码,所以我实际上没有做任何修改?为每个
循环执行内的行?那么您提供了错误的进程名称,或者缺少足够的用户权限来运行管理查询。如果该行代码从未执行,dMemory
将始终为零。要查看该行是否执行,请设置一个调试器断点,并逐步查看代码是否执行。检查dMemory
如果您不知道查询是否曾经运行过,则绝对不会告诉您任何信息。