私は VB6 で書かれたプログラムを持っていますが、それ自体が使用しているメモリの量を知ることができるようにしたいと考えています。
少しグーグルで調べたところ、「GlobalMemoryStatusEx」Windows API関数にたどり着きましたが、それは私が探しているものではないようです.コンピューターのメモリ全体に関する情報を提供するために使用できますが、現在のプロセス自体。
何か案は?ありがとう。
私は VB6 で書かれたプログラムを持っていますが、それ自体が使用しているメモリの量を知ることができるようにしたいと考えています。
少しグーグルで調べたところ、「GlobalMemoryStatusEx」Windows API関数にたどり着きましたが、それは私が探しているものではないようです.コンピューターのメモリ全体に関する情報を提供するために使用できますが、現在のプロセス自体。
何か案は?ありがとう。
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