以编程方式告诉我VB6应用程序正在使用多少内存?

3

我有一个用VB6编写的程序,我希望它能够知道自身正在使用多少内存。

在谷歌上搜索了一下,只找到了“GlobalMemoryStatusEx”Windows API函数,但这似乎不是我要找的:它可以用于提供关于计算机整体内存的信息,而我想要的是关于当前进程本身的信息。

有什么想法吗?谢谢。


1
回答自己的问题:GetProcessMemoryInfo - user2132436
2个回答

3
你可以使用 GetProcessMemoryInfo() 函数:
声明:
Public Type PROCESS_MEMORY_COUNTERS
  cb As Long
  PageFaultCount As Long
  PeakWorkingSetSize As Long
  WorkingSetSize As Long
  QuotaPeakPagedPoolUsage As Long
  QuotaPagedPoolUsage As Long
  QuotaPeakNonPagedPoolUsage As Long
  QuotaNonPagedPoolUsage As Long
  PagefileUsage As Long
  PeakPagefileUsage As Long
End Type

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Function GetProcessMemoryInfo Lib "PSAPI.DLL" (ByVal hProcess As Long, ppsmemCounters As PROCESS_MEMORY_COUNTERS, ByVal cb As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

调用代码:

Dim tPMC As PROCESS_MEMORY_COUNTERS

'ProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessID)
ProcessHandle = GetCurrentProcess()

If (GetProcessMemoryInfo(ProcessHandle, tPMC, Len(tPMC)) <> 0) Then
  PageFaultCount = Format(tPMC.PageFaultCount, "#,###")
  WorkingSetSize = FormatFileSize(tPMC.WorkingSetSize)
  PageFileUsage = FormatFileSize(tPMC.PagefileUsage)
End If

CloseHandle ProcessHandle

0
这个论坛帖子中,有一个建议涉及到tasklist.exe shell命令,它会打印出所有正在运行的进程以及内存使用情况。我不确定性能如何...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接