Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 以编程方式告诉我的VB6应用程序正在使用多少内存?_Memory_Vb6_Instrumentation - Fatal编程技术网

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

Memory 以编程方式告诉我的VB6应用程序正在使用多少内存?,memory,vb6,instrumentation,Memory,Vb6,Instrumentation,我有一个用VB6编写的程序,我希望它能够知道它本身使用了多少内存 谷歌搜索一下,我只找到了“GlobalMemoryStatusEx”Windows API函数,但这似乎不是我想要的:它可以用来提供有关计算机内存的总体信息,而我需要有关当前进程本身的信息 有什么想法吗?谢谢。中有一个建议涉及到tasklist.exeshell命令,它将打印出所有正在运行的进程以及内存使用情况。我不确定性能。您可以使用以下功能: 声明: Public Type PROCESS_MEMORY_COUNTERS

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

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

有什么想法吗?谢谢。

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

您可以使用以下功能:

声明:

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
Dim tPMC作为进程内存计数器
'ProcessHandle=OpenProcess(进程\查询\信息或进程\虚拟机\读取,0,进程ID)
ProcessHandle=GetCurrentProcess()
如果(GetProcessMemoryInfo(ProcessHandle,tPMC,Len(tPMC))0),则
PageFaultCount=格式(tPMC.PageFaultCount,“#,####”)
WorkingSetSize=格式化文件大小(tPMC.WorkingSetSize)
PageFileUsage=FormatFileSize(tPMC.PageFileUsage)
如果结束
CloseHandle进程句柄

回答我自己的问题:[GetProcessMemoryInfo][1]。[1]: