一个简单的例子: Private Sub Command3_Click() Dim strComputer As String Dim objWMIService As Object Dim colProcessList Dim objProcess As Object On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery("select * from win32_process where processid=1380") For Each objProcess In colProcessList Debug.Print CStr(objProcess.workingsetsize / 1024) & "K" NextEnd Sub上面的代码显示pid为1380的那个进程的即时内存使用情况。。 不想用pid,用name也可以,改改上面那个查询语句就可以了。 2000、xp、2003系统可行。。
内存使用方面使用wmi方法应该比较简单,但内存使用情况每一时刻都不同,如果要得到最大占用内存数又必须定时得到现时的内存数,这样又涉及到是否要在计算过程添加doevents,同时如果读内存的时间间隔太小又怕影响计算的总时间要取得一个平衡
或者考虑一下多线程。
关注大家的帮助,谢谢大家了!
Private Sub Command3_Click()
Dim strComputer As String
Dim objWMIService As Object
Dim colProcessList
Dim objProcess As Object
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("select * from win32_process where processid=1380")
For Each objProcess In colProcessList
Debug.Print CStr(objProcess.workingsetsize / 1024) & "K"
NextEnd Sub上面的代码显示pid为1380的那个进程的即时内存使用情况。。
不想用pid,用name也可以,改改上面那个查询语句就可以了。
2000、xp、2003系统可行。。