function GetProgramRAMUsed:int64;
var
MainHandle: THandle;
pmc: PROCESS_MEMORY_COUNTERS;
cb: Integer;
begin
if Win32Platform = 2 then
begin
MainHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, GetCurrentProcessID);
cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
GetProcessMemoryInfo(MainHandle, @pmc, cb);
Result:=pmc.WorkingSetSize;
CloseHandle(MainHandle);
end
else Result:=-1;
end;
PagefileUsage/1024- “虚拟内存”领域。WorkingSetSize/1024- 与“内存”字段非常接近的值。WorkingSetSize是工作集,应用程序在用户模式和内核模式下占用的内存量,即 包括为存储系统中程序信息而分配的所有内存(进程对象、线程对象、句柄等)。Delphi 的标准内存管理器提供了显示Delphi 内存分配的GetMemoryManagerState函数。
该网站上还有一个使用示例。
好吧,以防万一,我会检查我们是否有 Win95/Win98。另外,您可以使用 OpenProcess 而不是 GetCurrentProcess (虽然,诚然,这更慢)。像这样的东西: